Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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()

	{


	}


}

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

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.

  • 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 von iNvAsIoN

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.

  • 2 Wochen später...

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.