2011-11-02 32 views
-1

的存在,我有这样的小码Java中,如何查看文件

File source; 
    if (!source.exists()) { 
     source = new File("instances/student"+student.getStudentID()+".data"); 
    } 

问题是,源未初始化。由于整个问题是要检查它是否存在,我该如何避免这种情况?

回答

7

创建一个File对象。

File source = new File(...); 

你用什么构造取决于你要如何找到一个文件。一个简单的路径String就足够了。

编辑:刚刚意识到你的困惑的来源可能是你认为创建File对象将尝试找到文件或在文件系统上创建它。事实并非如此。只要拨打new File(...)就不会检查它的存在或尝试创建它。 File对象只是文件系统中路径的抽象。它也可以是一个目录。

+0

等等,你的意思是如果我做新的文件(...)它不会覆盖现有的文件? – vedran

+0

@vedran准确。它不会对文件系统做任何事情。它只是一个Java对象。只有当你开始调用像exists()这样的方法时,delete()或者renameTo才能访问实际的文件。当你想改变内容时,你需要像'FileWriter'这样的东西。要创建一个不存在的文件,你需要在'File'对象上调用'createNewFile()'。查看[JavaDoc](http://download.oracle.com/javase/6/docs/api/java/io/File.html)以获取准确信息。 –

1

你可以这样做:

File f = new File(somepathhere); 
if (!f.exists()) { 
    f = new File("instances/student"+student.getStudentID()+".data"); 
} 

或者你也可以检查是否f.isFile()

0

你似乎有一种误解。创建文件不会在文件系统上创建文件。一个File对象只能表示一个文件名。如果您想查看文件是否存在,请创建一个适当名称的文件并检查exists()

但是,如果你想覆盖或追加到一个文件,你甚至不需要所有的。如果要附加,只需创建一个new FileOutputStream(...),并将append参数设置为true。事先不需要检查,实际上这不仅仅是浪费时间。