我对Java File类有疑问。当我创建一个File实例时,例如,
File aFile = new File(path);
aFile实例存储在计算机中的哪个位置?或者它存储在JVM中?我的意思是本地磁盘中是否存有临时文件?
如果我有一个InputStream实例,并使用OutputSteam将其写入文件,例如
File aFile = new File("test.txt");
OutputStream anOutputStream = new FileOutputStream(aFile);
byte aBuffer[] = new byte[1024];
while( ( iLength = anInputStream.read( aBuffer ) ) > 0)
{
anOutputStream.write( aBuffer, 0, iLength);
}
现在文件test.txt存储在哪里?
提前致谢!
答案 0 :(得分:4)
File
对象根本不是真正的文件 - 它实际上只是一个文件名/位置,以及挂钩到文件系统以检查文件是否真的存在的方法等等。没有 content 与File
实例直接关联 - 例如,它不像是一个虚拟的内存文件。实例本身就像任何其他对象一样只是内存中的一个对象。
单独创建File
实例会对文件系统 nothing 。
但是,当您创建FileOutputStream
时, 会影响您要写入的任何文件系统。虽然File
实例相对无关紧要 - 您可以从以下方面获得相同的效果:
OutputStream anOutputStream = new FileOutputStream("test.txt");
答案 1 :(得分:1)
它将使用路径争论来编写指定它的文件。
在您的情况下,它会将它写在您运行java类的目录中。
如果指定/test/myproject/myfile.txt
它将进入/test/myproject/myfile.txt
答案 2 :(得分:0)
如果您没有提供路径,则它位于当前目录中(即:执行java.exe的目录。)如果您提供完整路径,则会将其存储在那里。
无论如何,它总是存储在文件系统中,而不是存储在JVM内存中。