我实现了一个按钮,用户单击此按钮,弹出文件选择器,用户可以选择文件,但是当他更改自己的首选项时,程序始终会理解第一个文件。
我通过写下size()方法找到了这个bug。首先,用户选择了大小为20的设备列表,在用另一个大小为100的列表更改此文档后,我预计会看到100大小,但我仍然看到20。
chooser = new JButton("Choose Device List");
chooser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JFileChooser fileopen = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("csv files", "csv");
fileopen.addChoosableFileFilter(filter);
int ret = fileopen.showDialog(null, "Open file");
if (ret == JFileChooser.APPROVE_OPTION) {
try {
DeviceHelper.loadDevices(fileopen.getSelectedFile());
int size = DeviceHelper.loadDevices(fileopen.getSelectedFile()).size();
System.out.println("Size of the program " + size);
} catch (IOException e) {
}
}
}
});
我该如何解决这个问题?有人可以帮助我吗?
编辑:
public static List<String> loadDevices(File file2) throws IOException {
if (deviceAdresses == null) {
deviceAdresses = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(file2))) {
String line = null;
while ((line = reader.readLine()) != null) {
if (line.trim().length() > 0) {
deviceAdresses.add(line);
}
}
}
}
return new ArrayList<String>(deviceAdresses);
}
答案 0 :(得分:2)
删除此项检查:
if (deviceAdresses == null) {
初始化deviceAdresses
后发生的情况,此检查将始终为false,并且永远不会读取新文件中的行。