的存在,我有这样的小码Java中,如何查看文件
File source;
if (!source.exists()) {
source = new File("instances/student"+student.getStudentID()+".data");
}
问题是,源未初始化。由于整个问题是要检查它是否存在,我该如何避免这种情况?
的存在,我有这样的小码Java中,如何查看文件
File source;
if (!source.exists()) {
source = new File("instances/student"+student.getStudentID()+".data");
}
问题是,源未初始化。由于整个问题是要检查它是否存在,我该如何避免这种情况?
创建一个File
对象。
File source = new File(...);
你用什么构造取决于你要如何找到一个文件。一个简单的路径String就足够了。
编辑:刚刚意识到你的困惑的来源可能是你认为创建File
对象将尝试找到文件或在文件系统上创建它。事实并非如此。只要拨打new File(...)
就不会检查它的存在或尝试创建它。 File对象只是文件系统中路径的抽象。它也可以是一个目录。
你可以这样做:
File f = new File(somepathhere);
if (!f.exists()) {
f = new File("instances/student"+student.getStudentID()+".data");
}
或者你也可以检查是否f.isFile()
你似乎有一种误解。创建文件不会在文件系统上创建文件。一个File对象只能表示一个文件名。如果您想查看文件是否存在,请创建一个适当名称的文件并检查exists()
。
但是,如果你想覆盖或追加到一个文件,你甚至不需要所有的。如果要附加,只需创建一个new FileOutputStream(...)
,并将append
参数设置为true
。事先不需要检查,实际上这不仅仅是浪费时间。
等等,你的意思是如果我做新的文件(...)它不会覆盖现有的文件? – vedran
@vedran准确。它不会对文件系统做任何事情。它只是一个Java对象。只有当你开始调用像exists()这样的方法时,delete()或者renameTo才能访问实际的文件。当你想改变内容时,你需要像'FileWriter'这样的东西。要创建一个不存在的文件,你需要在'File'对象上调用'createNewFile()'。查看[JavaDoc](http://download.oracle.com/javase/6/docs/api/java/io/File.html)以获取准确信息。 –