Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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 - Fatal编程技术网

Java 检查字符串中是否存在文件

Java 检查字符串中是否存在文件,java,Java,这是我在尝试读取*.txt文件中的某些特定文本时使用的代码: public void readFromFile(String filename, JTable table) { BufferedReader bufferedReader = null; try { bufferedReader = new BufferedReader(new FileReader(filename)); String a,b,c

这是我在尝试读取*.txt文件中的某些特定文本时使用的代码:

public void readFromFile(String filename, JTable table) {

        BufferedReader bufferedReader = null;

        try {
            bufferedReader = new BufferedReader(new FileReader(filename));
            String a,b,c,d;
            for(int i=0; i<3; i++)
            {
              a = bufferedReader.readLine(); 
              b = bufferedReader.readLine(); 
              c = bufferedReader.readLine(); 
              d = bufferedReader.readLine(); 
              table.setValueAt(a, i, 0);
              table.setValueAt(b, i, 1);
              table.setValueAt(c, i, 2);
              table.setValueAt(d, i, 3);
            }

        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            //Close the reader
            try {
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
问题如下:第一次打开程序时,我要读取的*.txt文件不存在,因此我认为可以使用函数
exists()
。我不知道该怎么办,但我试过:

if(("C:/data/datafile.txt").exists()) {
readFromFile("C:/data/datafile.txt", table1)
}

它不起作用,因为NetBeans给了我很多错误。如何修复此问题?

String
没有名为
exists()
的方法(即使它这样做了,也不会满足您的要求),这将是IDE报告错误的原因

创建的实例并调用
文件
实例:

if (new File("C:/data/datafile.txt").exists())
{
}

您可以使用此代码检查文件是否存在

使用java.io.File

File f = new File(filePathString);
if(f.exists()) { /* do something */ }

注意:这个答案使用的类在低于Java7的版本上是不可用的

对象字符串的方法
exists()
不存在。有关更多信息,请参阅。如果要根据路径检查文件是否存在,应使用
path
Files
来验证文件是否存在

Path file = Paths.get("C:/data/datafile.txt");

if(Files.exists(file)){
   //your code here
}
关于
路径
类的一些教程:
还有一篇关于

对代码的建议

我将向您介绍教程,因为它可能对您有用。我还想引起您的注意,因为它可以帮助您减少读取操作的代码。基于此方法,您可以使用for-each循环将文件的所有行添加到
JTable

中,您需要为其指定一个实际的文件对象。您的思路是正确的,但是NetBeans(以及java)不知道什么是“(((C:/data/datafile.txt”)”

您可能想做的是使用该字符串作为参数创建一个
java.io.File
对象,如下所示:

File file = new File ("C:/data/datafile.txt");
if (file.exists()) {
   readFromFile("C:/data/datafile.txt", table1);
}
另外,您在
readFromFile
调用的末尾缺少一个分号。我不确定这是否只是一个打字错误,但你也要检查一下

如果您知道您仅使用此
文件
对象来检查是否存在,您还可以执行以下操作:

if (new File("C:/data/datafile.txt").exists()) {
   readFromFile("C:/data/datafile.txt", table1);
}

如果要确保可以读取文件,甚至可以使用:

if(new File("C:/data/datafile.txt").canRead()){
    ...
}
作为一个条件,为了验证文件是否存在,您有足够的权限读取该文件

Path file = Paths.get("C:/data/datafile.txt");

if(Files.exists(file)){
   //your code here
}

在大约10秒钟内,我就找到了答案:)@AlbertoRossi如果对你有效,请接受答案,伙计。:)目前,您可以简单地从FileNotFoundException的异常处理程序返回。