这里我的IO有问题。字符串ext []只读取txt文件中的最后一个条目,在这种情况下只有jpg。 我想阅读所有,但它只读取最后我必须在构造函数中保留此代码 请指出错误 提前致谢
/////Text file format
txt
png
jpg
///// file reading code
String line;
//// constructor
public MainFrame(){
initComponents();
fileChooser=new JFileChooser();
try {
Scanner in = new Scanner(new FileReader("ext.txt"));
while (in.hasNextLine()) {
line = in.nextLine();
} System.out.println(line);
String ext[] = line.split("\\n"); /// can't read all the strings from file.
FileNameExtensionFilter filter = new FileNameExtensionFilter("TEXT FILES",ext);
fileChooser.setFileFilter(filter);}
catch(IOException io){
}
}
答案 0 :(得分:1)
您的问题出在String ext[]
每次循环时都会覆盖变量ext[]
。我认为你应该这样做:
try {
ArrayList<String> ext = new ArrayList<String>();
Scanner in = new Scanner(new FileReader("ext.txt"));
while (in.hasNextLine()) {
line = in.nextLine();
} System.out.println(line);
ext.append(line.split("\\n"));
你可能需要做一些语法工作,因为我没有在java中工作过一段时间,但我认为这是对的
答案 1 :(得分:0)
在java中逐行读取文件通常使用BufferedReader完成。因此,您也可以处理异常,并在阅读后始终关闭文件。
以下是我的一个例子,但我强烈建议您阅读有关使用文件的更多信息。一个很好的开始是oracle文档(http://docs.oracle.com/javase/tutorial/essential/io/file.html)
//a collection that stores the lines
List<String> lines = new ArrayList<String>()
BufferedReader buf = null;
try{
buf = new BufferedReader(new FileReader(file));
String line = null;
while((line = buf.readLine()) != null){
lines.add(line);
}
//if something goes wrong
catch(IOException ex){
ex.printStackTrace();
}
finally{
//closing the buffer, so that the file isnt locked anymore
if(buf != null)
buf.close();
}