Hallo,
habe folgendes Problem:
Ich würde gern eine Datei via Java kopieren und habe dafür folgende Methode:
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:
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?
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?