这是我尝试读取* .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给了我很多错误。我怎么能解决这个问题?
答案 0 :(得分:22)
String
没有名为exists()
的方法(即使它确实没有按照您的要求执行),这也是IDE报告错误的原因。
if (new File("C:/data/datafile.txt").exists())
{
}
答案 1 :(得分:8)
注意:此答案使用的版本不是Java 7以下的版本。
对象 String 的方法exists()
不存在。有关详细信息,请参阅String documentation。如果要根据路径检查文件是否存在,则应使用Path
和Files
来验证文件是否存在。
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()){
...
}
作为条件,为了验证文件是否存在和,您有足够的权限从文件中读取。