有一道题如下:
`“测试文件.txt”中,有如下数据:abc
请分析,以下代码执行后,文件中的数据为: ( )
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("测试文件.txt"); //1
FileOutputStream fos = new FileOutputStream("测试文件.txt"); //2
int temp = 0;
while((temp = fis.read()) != -1){
fos.write(temp);
}
fis.close();
fos.close();
}
A: abcabc
B: abc
C: 没有数据
D: 979899
答案:C
为什么会没有数据呢?
我们可以将写入和读取操作注释,留下1 和 2两个操作,会发现当第二个操作执行后文件就变成了无数据的文件。
原因是:
输出流的机制是如果文件已存在,输出流会直接覆盖原有的文件,即新建一个无数据的文件,而后输入流实际读取的是一个空文件,那么输出流写入的内容也为空,最后造成无数据现象