我有这个小代码
File source;
if ( !source.exists() ) {
source = new File("instances/student"+student.getStudentID()+".data");
}
问题是,源未初始化。由于重点是检查它是否存在,我该如何避免这种情况?
答案 0 :(得分:7)
创建一个File
对象。
File source = new File(...);
您使用的构造函数取决于您希望如何定位文件。一个简单的路径字符串就足够了。
编辑:刚刚意识到您混淆的原因可能是您认为创建File
对象会尝试找到文件或在文件系统上创建它。事实并非如此。只是调用new File(...)
不会检查它的存在或尝试创建它。 File对象只是文件系统中路径的抽象。它也可以是一个目录。
答案 1 :(得分:1)
你可以这样做:
File f = new File(somepathhere);
if ( !f.exists() ) {
f = new File("instances/student"+student.getStudentID()+".data");
}
或者您可以检查f.isFile()
答案 2 :(得分:0)
你似乎有误会。创建文件不会在文件系统上创建文件。 File对象仅表示文件名。如果要查看文件是否存在,请创建相应名称的文件并选中exists()
。
但是如果你想覆盖或附加到文件,你甚至不需要那些。如果要追加,只需创建new FileOutputStream(...)
,append
参数设置为true
即可。不需要事先检查,实际上这不仅仅是浪费时间。