# Pfadangabe beim kopieren übers Netzwerk



## Testus2K (9. Feb 2009)

Hallo
Ich steige gerade erst in Java ein und versuche eine Klasse zu schreiben, 
die mir das kopieren von Dateien ermöglicht.

Ich weiß, dass es verschiedene Möglichkeiten gibt Dateien zu kopieren.
Ich habe mich für eine Möglichkeit entschieden und würde gerne dabei bleiben.
Ein Freund hat mir schon gesagt, dass Pfade unter Java kein "\" sondern ein "/" brauchen und 
soweit funktioniert auch alles, ich kann nur leider nichts finden, wie ich den Pfad angeben muss, 
um Dateien auf ein freigegebenen Netzwerk Ordner zu kopieren.

Bei meinen Versuchen es durch trial and error heraus zu  finden bekomme ich immer den Fehler:
"Das System kann den angegebenen Pfad nicht finden".

Danke schonmal
MfG Testus2K


```
private static void doCopy(File src, File dst) throws IOException {
		     
		        InputStream in = new FileInputStream(src);
		        OutputStream out = new FileOutputStream(dst);

		        byte[] buf = new byte[1024];
		        int len;
		        while ((len = in.read(buf)) > 0) {
		            out.write(buf, 0, len);
		        }
		        in.close();
		        out.close();
		    }
```


----------



## Ebenius (9. Feb 2009)

Wie heißen denn die Dateinamen genau? Kannst du mal den gesamten StackTrace mit-posten?

Die java.io.File-API sagt zu UNC-Pfaden, die Du sehr wohl mit Backslashes verwenden kannst und auch solltest: 





> For Microsoft Windows platforms, the prefix of a pathname that contains a drive specifier consists of the drive letter followed by ":" and possibly followed by "\" if the pathname is absolute. The prefix of a UNC pathname is "\\"; the hostname and the share name are the first two names in the name sequence. A relative pathname that does not specify a drive has no prefix.



Ebenius


----------



## Testus2K (9. Feb 2009)

Also die Datei, die ich kopiere heißt "1234.txt" und ich kopiere sie von C in den Ordner test.
Über Netzwerk versuche ich die Datei nach "\\Mediaschrank\filme1 (d)\1" zu kopieren.
Ortsangaben die nicht übers Netzwerk gehen funktionieren auch mit Freizeichen und Klammern.

Den StackTrace würde ich gerne Posten, hab aber keine Ahnung, was das ist und wo ich das her bekomme .


----------



## Ebenius (9. Feb 2009)

Testus2K hat gesagt.:
			
		

> Den StackTrace würde ich gerne Posten, hab aber keine Ahnung, was das ist und wo ich das her bekomme .




```
try {
  doCopy(file1, file2);
} catch (IOException ex) {
  ex.printStackTrace();
}
```
^^ Die gesamte Ausgabe hätte ich gern. :-D

Ebenius


----------



## Testus2K (9. Feb 2009)

Vielen Dank erstmal Ebenius, das Problem ist jetzt gelöst!
Nachdem ich dein Code eingefügt und den Stack gesehen hab, habe ich gesehen, was der aus dem Pfad gemacht hat 
(siehe unten). Hab den Pfad dann von "\\Mediaschrank\filme1 (d)\1\1234.txt" in "//Mediaschrank/filme1 (d)/1/1234.txt" geändert und es funktionierte. 

Also vielen Dank nochmal


Stack:


> java.io.FileNotFoundException: \Mediaschrankilme1 (d)S4.txt (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)
> at java.io.FileOutputStream.open(Native Method)
> at java.io.FileOutputStream.<init>(Unknown Source)
> at java.io.FileOutputStream.<init>(Unknown Source)
> ...


----------



## Ebenius (9. Feb 2009)

Mach in Deinem Source-Code aus jedem Backslash zwei. Dann geht's. Backslash ist in Java ein Escape-Character.


----------

