Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,如何检查文件是否存在_Java_File - Fatal编程技术网

Java,如何检查文件是否存在

Java,如何检查文件是否存在,java,file,Java,File,我有这个小代码 File source; if ( !source.exists() ) { source = new File("instances/student"+student.getStudentID()+".data"); } 问题是,源未初始化。既然关键是要检查它是否存在,我该如何避免这种情况?创建一个文件对象 File source = new File(...); 您使用的构造函数取决于您希望如何定位文件。一个简单的路径字符串就足够了

我有这个小代码

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

问题是,源未初始化。既然关键是要检查它是否存在,我该如何避免这种情况?

创建一个
文件
对象

File source = new File(...);
您使用的构造函数取决于您希望如何定位文件。一个简单的路径字符串就足够了

编辑:刚刚意识到您的困惑的根源可能是您认为创建
文件
对象将尝试定位文件或在文件系统上创建它。事实并非如此。仅仅调用
新文件(…)
不会检查它的存在或尝试创建它。文件对象只是文件系统中路径的抽象。它也可以是一个目录。

您可以执行以下操作:

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

或者您可以检查f.isFile()

您是否有误解。创建文件不会在文件系统上创建文件。文件对象实际上只表示文件名。如果要查看文件是否存在,请创建一个具有适当名称的文件并选中
exists()


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

等等,你的意思是如果我创建新文件(…),它不会覆盖现有文件?@vedran。它不会对文件系统做任何事情。它只是一个Java对象。只有当您开始调用诸如
exists()
delete()
rename to
之类的方法时,才能访问实际文件。当您想要更改内容时,您需要类似于
文件编写器的东西。要创建一个不存在的文件,您需要在
文件
对象上调用
createNewFile()
。检查数据库以获取准确信息。