【发布时间】:2017-08-06 23:33:06
【问题描述】:
如果我使用默认构造函数创建类 FileInputStream 和 FileOutputStream 的两个实例,并作为参数指定相同的路径和文件名,会发生什么..
FileInputStream is = new FileInputStream("SomePath/file.txt");
FileOutputStream os = new FileOutputStream("SamePath/file.txt");
假设我们在文件“file.txt”中有一些字符串。接下来,我尝试使用循环从 file.txt 读取字节并将它们写入同一个 file.txt 每次迭代,如下所示:
while (is.available()>0){
int data = is.read();
os.write(data);
}
is.close();
os.close();
问题是当我尝试运行我的代码时,file.txt 中的所有文本都被删除了。当两个或多个流尝试使用同一个文件时会发生什么? Java 或文件系统如何在这种情况下工作?
【问题讨论】:
-
它们不是同一个文件 - 您的代码 sn-p 中的路径不同。
-
如果它们是同一个文件,你到底为什么要这样做?
-
不不,它们的路径相同,somePath 等于 samePath
-
那么将文件复制到自身上究竟有什么意义呢?如果您只是从应用程序中删除所有这些代码,它会比现在更好地工作。
标签: java inputstream java-io outputstream