FileNotFoundException abfangen?

Status
Nicht offen für weitere Antworten.

alphaChill

Aktives Mitglied
Hallo,

habe folgendes Problem:

Ich würde gern eine Datei via Java kopieren und habe dafür folgende Methode:

Code:
	public static void copyFile(String file_src, String file_dest, int bufSize,boolean force) throws IOException {
		
		File src = new File(file_src);
		File dest = new File(file_dest);
		
	    if(dest.exists()) {
	        if(force) {
	            dest.delete();
	        } else {
	            throw new IOException(
	                    "Cannot overwrite existing file: " + dest);
	        }
	    }
	    byte[] buffer = new byte[bufSize];
	    int read = 0;
	    InputStream in = null;
	    OutputStream out = null;
	    try {
	        in = new FileInputStream(src);
	        System.out.println(in.available());
	        out = new FileOutputStream(dest);
	        while(true) {
	            read = in.read(buffer);
	            if (read == -1) {
	                //-1 bedeutet EOF
	                break;
	            }
	            out.write(buffer, 0, read);
	        }
	    } finally {
	        // Sicherstellen, dass die Streams auch
	        // bei einem throw geschlossen werden.
	        // Falls in null ist, ist out auch null!
	        if (in != null) {
	            //Falls tatsächlich in.close() und out.close()
	            //Exceptions werfen, die jenige von 'out' geworfen wird.
	            try {
	                in.close();
	            }
	            finally {
	                if (out != null) {
	                    out.close();
	                }
	            }
	        }
	    }
	}

Das funktioniert auch soweit wunderbar, nun habe ich allerdings das Problem, dass ich eine "FileNotFoundException" bekomme, wenn ich die Datei bearbeite und abspeichere, die kopiert werden soll. Also im Prinzip habe ich ein Programm, welches jede Sekunde die Datei X kopiert, wenn ich die Datei X öffne, bearbeite und abspeichere bekomme ich diese Meldung:

Code:
Exception in thread "main" java.io.FileNotFoundException: C:\Dokumente und Einstellungen\Admin\Desktop\Sicher\Neu Bitmap (5).bmp (Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at fileSync.Starter.MethodenStarter.copyFile(MethodenStarter.java:277)
	at fileSync.Starter.MethodenStarter.main(MethodenStarter.java:134)

In der Zeile "277" steht der Inhalt " in = new FileInputStream(src);" (von der CopyFile-Methode) und in Zeile 134 wird diese Methode verwendet bzw. aufgerufen.

Ist es möglich, dass das Programm erkennt, dass die Datei gerade geöffnet ist und diese dann einfach nicht kopiert, sodass der Fehler nicht entsteht?
 
Wenn ich das richtig verstehe, ist der Thread-Titel bereits die Antwort ???:L

Fang die Exception doch wenn Du nicht willst dass sie das Programm abbricht.
try und finally hast Du ja schon. Fehlt nur noch ein "catch(FileNotFoundException e)" dazwischen.
 
Vielen Dank für den Hinweis! Hätte nicht gedacht, dass das so einfach ist... hab bis jetzt noch nicht so viele Erfahrungen mit Exceptions, daher habe ich das auch erstmal in die "Anfängerfragen" gestellt ;-)

Aber nun weiß ich ja, wie man's macht, dank dir 🙂
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben