这是我尝试读取*.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报告的错误的原因.
if (new File("C:/data/datafile.txt").exists())
{
}
Run Code Online (Sandbox Code Playgroud)
注意:此答案使用的版本不是Java 7以下的版本.
exists()对象String的方法不存在.有关更多信息,请参阅String文档.如果您想检查文件是否存在的路径上垒,你应该使用Path与Files验证文件的存在.
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.
| 归档时间: |
|
| 查看次数: |
10363 次 |
| 最近记录: |