Moin,
Ich habe in meinem Programm das Problem, dass ein File gelegentlich als Directory erkannt wird.
Ich erzeugte das File mit der Methode copyFile als Kopie einer anderen Datei:
Normalerweise wird die Datei danach dann noch an einen FTP-Server geschickt und verarbeitet. Zu Testzwecken habe ich diesen Teil aber auskommentiert.
Im Anschluss lösche ich die neue Datei direkt wieder mit der Methode removeFile():
Weil ich in der Abfrage
erst nicht files != null geprüft habe, hat mir die Methode an der Stelle ab und zu eine Null Pointer Exception geschmissen.
Daraufhin habe ich dann auch noch eine Abfrage isFile eingebaut.
Beim Durchlaufen der Methode, der immer der Name der neu erzeugten Datei übergeben wird, wird entweder "filename is a file" oder "filename is a directory" ausgegeben.
Wie kann es sein, dass Java die Datei manchmal fälschlicherweise als Directory erkennt?
MfG
Skyline
Ich habe in meinem Programm das Problem, dass ein File gelegentlich als Directory erkannt wird.
Ich erzeugte das File mit der Methode copyFile als Kopie einer anderen Datei:
Java:
public static void copyFile(File in, File out)
throws IOException
{
FileChannel inChannel = new FileInputStream(in).getChannel();
FileChannel outChannel = new FileOutputStream(out).getChannel();
try {
inChannel.transferTo(0, inChannel.size(),outChannel);
}
catch (IOException e) {
throw e;
}
finally {
if (inChannel != null) {
inChannel.close();
}
if (outChannel != null) outChannel.close();
}
}
Normalerweise wird die Datei danach dann noch an einen FTP-Server geschickt und verarbeitet. Zu Testzwecken habe ich diesen Teil aber auskommentiert.
Im Anschluss lösche ich die neue Datei direkt wieder mit der Methode removeFile():
Java:
public static boolean removeFile(String fileName) {
// A File object to represent the filename
File f = new File(fileName);
// Make sure the file or directory exists and isn't write protected
if (!f.exists())
throw new IllegalArgumentException(
"Delete: no such file or directory: " + fileName);
if (!f.canWrite())
throw new IllegalArgumentException("Delete: write protected: "
+ fileName);
if(f.isFile()) {
System.out.println( "'" + fileName + "' is a file" );
}
// If it is a directory, make sure it is empty
if (f.isDirectory()) {
System.out.println( "'" + fileName + "' is a directory" );
String[] files = f.list();
if (files != null && files.length > 0)
throw new IllegalArgumentException(
"Delete: directory not empty: " + fileName);
}
// Attempt to delete it
boolean success = f.delete();
if (!success)
throw new IllegalArgumentException("Delete: deletion failed");
return success;
}
Weil ich in der Abfrage
Code:
if (files != null && files.length > 0)
Daraufhin habe ich dann auch noch eine Abfrage isFile eingebaut.
Beim Durchlaufen der Methode, der immer der Name der neu erzeugten Datei übergeben wird, wird entweder "filename is a file" oder "filename is a directory" ausgegeben.
Wie kann es sein, dass Java die Datei manchmal fälschlicherweise als Directory erkennt?
MfG
Skyline