Ich versuche, ein sehr einfaches Feature zu einem Java-Programm hinzuzufügen. Die Funktion, die ich hinzufügen möchte, verschiebt einfach alle Dateien von zwei Ordnern in einen dritten "Archiv" -Ordner. Der Code ist einfach und ich verstehe es 100% das Problem ist, nur einer der Inhalte des Ordners wird verschoben. Ich habe den Code mit einem feinen Zahnkamm durchgegangen und habe versucht, das Verzeichnis mehrmals zu wiederholen, nichts scheint zu funktionieren. Wenn jemand mir helfen könnte herauszufinden, warum der Inhalt meines zweiten Ordners nicht bewegt wird, würde ich es wirklich zu schätzen wissen.Unerwartete Ergebnisse Verschieben von Dateien zwischen Ordnern
FYI, um diesen Code zu testen, müssen Sie ein paar Ordner zu "Eigene Dateien" hinzufügen. "Pain008Files", "Camt54-Dateien" und "Archiv". Außerdem müssen Sie dem Pain008- und Camt5-Ordner nur eine Art Textdatei hinzufügen, es kann nur einen zufälligen Buchstaben haben, der nur verschoben werden kann.
Zur Laufzeit werden im Ordner Pain008Files alle Dateien korrekt in den Archivordner verschoben. Die Camt54-Dateien nicht. Das einzige Problem, das mir einfällt, ist, dass vielleicht der Platz im Camt54 Files-Namen ein Problem verursacht, aber das macht keinen Sinn, also dachte ich, ich würde es verschieben, bis ich Hilfe bekomme. Danke im Voraus!
Hauptklasse
package fileHandling;
public class moveTestMain
{
public static void main(String args[]){
GetUser gUser = new GetUser();
gUser.getUser();
MoveFiles mFiles = new MoveFiles();
mFiles.moveCamtFiles();
mFiles.movePainFiles();
}
}
erhält der Benutzer-Name Klasse
package fileHandling;
public class GetUser
{
public static String currentUser = null;
public void getUser(){
currentUser = System.getProperty("user.name");
}
}
Verschieben Sie die Dateien Klasse
package fileHandling;
import java.io.File;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
public class MoveFiles
{
public static ArrayList<File> pain008Files;
public static ArrayList<File> camt54Files;;
public void movePainFiles(){
File pain008File = new File("C:\\Users\\"+GetUser.currentUser+"\\Documents\\Pain008Files");
pain008Files = new ArrayList<File>(Arrays.asList(pain008File.listFiles()));
System.out.println(pain008Files);
for(int i = 0; i < pain008Files.size(); i++){
System.out.println("Test");
int cutAmount = GetUser.currentUser.length();
String fileName = pain008Files.get(i).toString().substring(33+cutAmount,pain008Files.get(i).toString().length());
System.out.println(fileName);
System.out.println(pain008Files.get(i).toString());
pain008Files.get(i).renameTo(new File("C:\\Users\\"+GetUser.currentUser+"\\Documents\\archive\\"+
"archivedPain_"+fileName));
}
}
public void moveCamtFiles(){
File camt54File = new File("C:\\Users\\"+GetUser.currentUser+"\\Documents\\Camt54 Files");
camt54Files = new ArrayList<File>(Arrays.asList(camt54File.listFiles()));
for(int i = 0; i < camt54Files.size(); i++){
int cutAmount = GetUser.currentUser.length();
String fileName = camt54Files.get(i).toString().substring(32+cutAmount,camt54Files.get(i).toString().length());
camt54Files.get(i).renameTo(new File("C:\\Users\\"+GetUser.currentUser+"\\Documents\\archive\\"+
"archivedCamt_"+fileName));
}
}
Versuchen Sie, den Raum zu ersetzen: 'Camt54% 32% Files'. Sehen Sie, ob das hilft –
Was passiert, wenn Sie den Code durchlaufen? Erhalten Sie irgendwelche Fehler? Eine Sache, die anders ist, ist das Vorhandensein eines Platzes in einem Verzeichnisnamen, der Probleme verursachen könnte. –
Sie können die Probleme beheben, indem Sie [Files.move] (http://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#move-java. nio.file.Path-java.nio.file.Path-java.nio.file.CopyOption ...-). Dann müssen Sie den Zieldateinamen nicht manuell mit einem Teilzeichenfolgenkonstrukt erstellen. – SubOptimal