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

Alb*_*ssi 3 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();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

它以这种方式调用:

readFromFile("C:/data/datafile.txt", table1)
Run Code Online (Sandbox Code Playgroud)

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

if(("C:/data/datafile.txt").exists()) {
readFromFile("C:/data/datafile.txt", table1)
}
Run Code Online (Sandbox Code Playgroud)

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

hmj*_*mjd 22

String没有命名的方法exists()(即使它确实不会做你需要的),这将是IDE报告的错误的原因.

创建的实例,File并调用exists()File实例:

if (new File("C:/data/datafile.txt").exists())
{
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*dre 8

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

exists()对象String的方法不存在.有关更多信息,请参阅String文档.如果您想检查文件是否存在的路径上垒,你应该使用PathFiles验证文件的存在.

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

if(Files.exists(file)){
   //your code here
}
Run Code Online (Sandbox Code Playgroud)

关于Path该类的一些教程: Oracle教程
和关于如何在Java 7中操作文件的博客文章

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