java中的freopen
在做ACM题目的时候,为节省输入测试数据的时间,我们通常将数据复制到一个文本文档里,然后从文档里读出,避免在控制台一个数据一个数据的输入。
之前一直用的C/C++,freopen用起来很方便,如下:
1 #define INPUT "C:/input.txt" 2 #define OUTPUT "C:/output.txt" 3 4 int main() { 5 // connect I/O streams to files 6 freopen(INPUT, "r", stdin); 7 freopen(OUTPUT, "w", stdout); 8 9 int x; 10 while (cin >> x) { 11 cout << x << endl; 12 } 13 14 cerr << "done." << endl; 15 return 0; 16 }
最近转到java,一时半会儿诸多不习惯,其中就有这个问题,java里怎么写“freopen”?如下:
1 public class Main { 2 static private final String INPUT = "C:/input.txt"; 3 static private final String OUTPUT = "C:/output.txt"; 4 5 public static void main(String args[]) { 6 // open I/O files 7 FileInputStream instream = null; 8 PrintStream outstream = null; 9 10 try { 11 instream = new FileInputStream(INPUT); 12 outstream = new PrintStream(new FileOutputStream(OUTPUT)); 13 System.setIn(instream); 14 System.setOut(outstream); 15 } catch (Exception e) { 16 System.err.println("Error Occurred."); 17 } 18 19 Scanner in = new Scanner(System.in); 20 for (;in.hasNext();) { 21 int x = in.nextInt(); 22 System.out.println(x); 23 } 24 25 System.err.println("done."); 26 return; 27 } 28 29 }
google了很多地方才找到这个模板,貌似来自一个日本的站点:http://techtipshoge.blogspot.com/2011/01/connect-standard-io-to-files.html
更厉害的一个站点,讲不同语言中的标准输入输出重定向(freopen),传送门,点开绝对有惊喜!也是一个日本程序员的个人博客。厉害!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签