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

时间:2013-07-16 13:25:55

标签: java

这是我尝试读取* .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();
            }
        }
    }

以这种方式调用它:

readFromFile("C:/data/datafile.txt", table1)

问题如下:第一次打开程序时,我要读的* .txt文件不存在,所以我想我可以使用函数exists()。我不知道该怎么做,但我试过了:

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

它不起作用,因为NetBeans给了我很多错误。我怎么能解决这个问题?

5 个答案:

答案 0 :(得分:22)

String没有名为exists()的方法(即使它确实没有按照您的要求执行),这也是IDE报告错误的原因。

创建File的实例并在File实例上调用exists()

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

答案 1 :(得分:8)

注意:此答案使用的版本不是Java 7以下的版本。

对象 String 的方法exists()不存在。有关详细信息,请参阅String documentation。如果要根据路径检查文件是否存在,则应使用PathFiles来验证文件是否存在。

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

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

关于Path课程的一些教程:Oracle tutorial
以及关于How to manipulate files in Java 7

的博客文章

对您的代码的建议
我将向您介绍有关try-with-resources的教程,因为它可能对您有用。我还想提请你注意Files#readAllLines,因为它可以帮助你减少阅读操作的代码。基于此方法,您可以使用for-each循环在JTable上添加文件的所有行。

答案 2 :(得分:3)

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

使用 java.io.File

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

答案 3 :(得分:2)

您需要为它提供一个实际的File对象。你是在正确的轨道上,但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电话结束时错过了分号。我不确定这只是一个错字,但你也想检查一下。

如果您知道自己只使用此File对象来检查存在,那么您也可以这样做:

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

答案 4 :(得分:2)

如果您想确保可以从文件中读取文件,甚至可以使用:

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

作为条件,为了验证文件是否存在,您有足够的权限从文件中读取。

Link to canRead() javadoc