Veröffentlicht 30. Juli 201213 j Hallo, ich habe eine Liste von Files angelegt z.b. eine Liste von XML Dateien und moechte diese in einen anderen Ordner verschieben. package PraktischeStudienphase; //import ! fuer Datenbank MySQLOperations etc. //import java.util.List; //import java.util.Map; import java.io.File; import java.util.ArrayList; import java.util.List; //import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; //import DatenbankVerbindung.MySQLDBOperations; //import DatenbankVerbindung.MySQLDBOperations; //wieder import //import db.MySQLDBOperations; import junit.framework.TestCase; public class Testprogramm extends TestCase { private MyFileHelper fileHelper; private File XMLFile; private DocumentBuilderFactory dbFactory; private Document doc; private DocumentBuilder dBuilder; private static Node nNode; private static int temp = 0; // public static Fall fall; // setUp wird vor allen Tests ausgefuehrt @BeforeClass public void setUp() throws Exception { // C:\\Users\\Pascal\\Desktop\\XMLundHL7Dateien\\ergebnis_10000000.xml // List<File[]> hl7List = new ArrayList<File[]>(); // Datenbank // MySQLDBOperations sqlop = new MySQLDBOperations(); // String selectCommandLine = // "SELECT value FROM t_maris_server WHERE id = 'workdir.hl7.adt.in';"; // List<Map<String, Object>> liste = sqlop.CommandSelect(selectCommandLine); // System.out.println(selectCommandLine.getBytes()); // String arbeitsverzeichnis = (String) liste.get(0).get((Object) "VALUE"); XMLTable table = new XMLTable(); String path = javax.swing.JOptionPane.showInputDialog("Set up your pathname!"); fileHelper = new MyFileHelper(); // HL7 Dateien und XML-Dateien in einer Liste speichern List<File> XMLFileList = new ArrayList<File>(); List<File[]> HL7FileList = new ArrayList<File[]>(); // Speichern XML-Datei in Liste XMLFileList.add(fileHelper.getXMLPath(path)); for (File xmlfl : XMLFileList) { System.out.println("Ich bin eine XML-Datei: " + xmlfl.getName()); } // Speichern HL7-Dateien in Liste um sie auf den Server zu kopieren HL7FileList.add(fileHelper.getHL7Paths(path)); for (File[] hl7 : HL7FileList) { for (int i = 0; i < hl7.length; i++) { // path // C:\\Users\\Pascal\\Desktop\\DBSimulation // C:\\Users\\Pascal\\Desktop\\XMLundHL7Dateien // C:\\Users\\Pascal\\Desktop\\XMLundHL7Dateien\\ergebnis_10000000.xml System.out.println("Ich bin eine HL7-Datei: " + hl7[i].getName()); [COLOR="red"]Hier die alten Dateien loeschen funktioniert schon,jetzt will ich diese in einen anderen Ordner verschieben. Wie kann ich das machen? es gibt eine Funktion renameTo aber ich kriege es nich hin , weiss jemand wie das funktioniert?[/COLOR] hl7[i].delete(); } } XMLDOMParser xmlParser = new XMLDOMParser(); // path // C:\\Users\\Pascal\\Desktop\\DBSimulation // C:\\Users\\Pascal\\Desktop\\XMLundHL7Dateien // C:\\Users\\Pascal\\Desktop\\XMLundHL7Dateien\\ergebnis_10000000.xml XMLFile = new File(fileHelper.getXMLPath(path).toString()); dbFactory = DocumentBuilderFactory.newInstance(); dbFactory.setIgnoringElementContentWhitespace(true); dbFactory.setIgnoringComments(true); dBuilder = dbFactory.newDocumentBuilder(); doc = dBuilder.parse(XMLFile); doc.getDocumentElement().normalize(); System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); NodeList nList = doc.getElementsByTagName("test"); System.out.println("-----------------------"); nNode = nList.item(temp); xmlParser.parseXML(nNode, 0, table); xmlParser.printTable(table); } @AfterClass public void tearDown() { } @Test public void testAll() { } }
30. Juli 201213 j Hey iNvAsIoN! Vorweg: Das Entfernen auskommentierten Codes hilft der Lesbarkeit ungemein und trägt zum Wohlwollen der Beitragsleser bei . Du löschst die Dateien aber nicht bevor du sie kopieren willst, oder? Dann wäre klar warum du sie danach nicht mehr kopieren kannst. Sonst sollte es kein all zu großes Problem darstellen die Datei zu kopieren und danach zu löschen. Zumindest in C# gibt es File.Copy(string Quelldateiname, string Zieldateiname, bool Overwrite) Ich gehe stark davon aus, dass das auch in Java vorhanden ist. Ergo: Datei kopieren, alte Datei löschen. Fertig. Entweder du hast nen Dreher drin oder ich verstehe dein Problem nicht. Gruß, Ziege
30. Juli 201213 j Vorweg: Das Entfernen auskommentierten Codes hilft der Lesbarkeit ungemein und trägt zum Wohlwollen der Beitragsleser bei . Das hatte ich schon in dem letzten Thread angemerkt. Du löschst die Dateien aber nicht bevor du sie kopieren willst, oder? Dann wäre klar warum du sie danach nicht mehr kopieren kannst. Wie wäre es mal mit Lesen der Dokumentation File (Java 2 Platform SE v1.4.2)) das würde ungemein weiter helfen.
30. Juli 201213 j Autor Alles klar, danke! Habe es anders hinbekommen. Aber es gibt tatsaechlich auch File.copy hat mir nur nicht gefallen, weil man Pfade angeben muss. Danke fuer die Hilfe! Gruss inva Bearbeitet 30. Juli 201213 j von iNvAsIoN
30. Juli 201213 j Ich kann NIO2 in Java 7 auch nur empfehlen. Die API ist zwar gewöhnungsbedürftig, aber unheimlich sauber und flexibel. Meist ist die Implementierung sogar schneller als die alte File-Klasse.
9. August 201213 j File f = new File("meineDateiImProgrammverzeichnis.bla"); f.rename(new File("blbubOrdner/"+f.getName())); "Aber es gibt tatsaechlich auch File.copy hat mir nur nicht gefallen, weil man Pfade angeben muss." ?? Muss man beim verschieben nicht immer Pfade angeben? Relativ oder Absolut sollte beides gehen.
9. August 201213 j Bitte nicht den Umweg über die Zeichenketten gehen. Dafür gibt's extra Konstruktoren/Methoden. Hat uns letzte Woche erst mehrere Stunden Arbeit gekostet, weil irgendein Zeichenkettengebastel mit Leerzeichen in Pfaden nicht klar kam. File f = new File("meineDateiImProgrammverzeichnis.bla"); File targetFolder = new File("blbubOrdner"); f.renameTo(new File(targetFolder, f.getName())); Oder in NIO2 (Hier gibt's gar keine Ausrede mehr, auf Zeichenketten auszuweichen) // Für Faule und für Legacy-Code Path sourceFile = new File("source.file").toPath(); Path targetFolder = new File("c:\\target\\folder").toPath(); Files.move(sourceFile, targetFolder.resolve(sourceFile));
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.