这几天学习java核心技术时碰见了这个文件I/O,看着比较简单就用eclipse试了一下,试一下才发现坑很多,而且有的坑也不知道是什么,简单记录一下。
先放一下最后成功的代码。
public static void main(String[] args)throws IOException {
// TODO Auto-generated method stub
Scanner cin=new Scanner(Path.of("f:\\test.txt"),StandardCharsets.UTF_8);
PrintWriter cout=new PrintWriter("f:\\key.txt",StandardCharsets.UTF_8);
int a=cin.nextInt();
int b=cin.nextInt();
cout.println( (a+b));
cout.flush();
cout.close();
}
首先关于Scanner的输入,Path of中的文件路径推荐写绝对地址,就是类似我写的这样,还有最后文件的后缀名一定要加,否则就会找不到这个文件接着抛异常,另外文件路径中可以有汉字,这个不影响。
总的来说Scanner的问题不大。
相比而言PrintWriter就麻烦很多,首先我想从test文件中读入两个整数然后将两个整数的和输出到test文件,我试了很久都不行,一直在抛异常,这样一运行我的test文件中的字符就会消失,我也不知道为什么。
接着我换了一个key文件,想输出到key文件中,但是发现还是不行,依然没有输出,后来看别人的代码加了一句cout.close();,于是我就照着做了,紧接着就可以在key中正常输出了,这个我也不知道为什么。
总之java文件I/O真的好麻烦…如果有路过的明白I/O的大佬,求指教!