선택한 모든 파일을 삭제하는 데 문제가 있습니다. 내가하려는 것은 "추가"를 클릭 한 후 선택한 파일이 새 폴더로 옮겨지고 이전 폴더에서 삭제됩니다. 하나의 파일이 잘 작동합니다. 파일을 삭제하고 이동합니다. 그러나 둘 이상은 처음으로 삭제됩니다. 내 루프는 파일을 삭제하지 않고 각 파일을 인식합니다. 나는 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'과 특히'Exception'에 대한'catch' 절이 출력물에서 다소 인색합니다. 스택 추적은 예외의 문자열 표시 (또는 아무것도 표시하지 않는 것)보다 도움이됩니다. –
예외가 발생하지 않습니다. 그것은 실행하고 내가 sysout 파일을 선택한 경우 3 파일을 보여줍니다하지만 첫 번째 만 삭제하려고하면 간다. – rogerthat
어떤 시스템, 어떤 Java 버전 및 네트워크 공유에있는 파일입니까? 필자는 최근 파일이 네트워크 드라이브에있을 때 파일 디스크립터가 제대로 릴리스되지 않은 Windows에서 이전 Java 버전 관련 버그를 읽었습니다. – Axel