我在刪除所有選定文件時遇到問題。我想要做的是點擊「添加」後,選擇的文件將被移動到一個新的文件夾,並在他們之前的文件夾中被刪除。一個文件工作正常。它刪除並移動文件。但不止一個,只有第一個被刪除。我的循環識別每個文件只是不刪除它們。我發佈了actionevent。如果需要更多代碼,請告訴我。我已經指出問題所在,所以我認爲,所以你不必搜索代碼。循環僅刪除第一個文件
public void actionPerformed(ActionEvent e) {
int returnValue = 0;
int option = 0;
File[] selectedFiles = new File[0];
if (e.getActionCommand().equals("CLOSE")) System.exit(0);
else if (e.getActionCommand().equals("ADD")) {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
returnValue = chooser.showOpenDialog(this);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File[] file = chooser.getSelectedFiles();
try {
FileInputStream fstream = null;
FileOutputStream ostream = null;
for (int i = 0; i < file.length; i++) {
fstream = new FileInputStream(file[i]);
ostream = new
FileOutputStream(file[i].getName());
Path path = Paths.get(file[i].getPath());
byte[] fileArray;
fileArray = Files.readAllBytes(path);
listModel.add(0, file[i].getName());
selectedFilesList.setModel(listModel);
//ostream.write(fileArray, 0, fileArray.length);
}
fstream.close();
//ostream.close();
try {
for(int i = 0; i < file.length; i++) {
//**----------------------->>>PROBLEM**
Files.delete(Paths.get(file[i].getPath()));
System.out.println(file[i].getName());
}
} catch (NoSuchFileException x) {}
System.err.format("%s: no such" + " file or directory%n")
} catch (DirectoryNotEmptyException x) {
System.err.format("%s not empty%n");
} catch (IOException x) {
// File permission problems are caught here.
System.err.println(x);
} catch (Exception err) {
}
}
您是否看到有例外的證據?另外,'IOException'的'catch'子句,特別是'Exception'在它們的輸出中相當吝嗇。堆棧跟蹤將比只是異常的字符串表示(或者沒有!)更有幫助。 –
沒有得到任何例外。它運行,如果我sysout文件名它顯示了3個文件選擇,但試圖刪除時只有第一次去。 – rogerthat
你在什麼系統上,什麼是java版本,以及位於網絡共享上的文件?我剛剛閱讀了一些關於Windows上較老java版本的問題,這些文件描述符在文件駐留在網絡驅動器上時沒有正確釋放。 – Axel