Java mit einem Stream eine .text Datei kopieren?
Ich möchte per Stream die Datei Hallo wie gehts.txt kopieren und eine neue Datei copy.txt erzeugen. Warum funktioniert dies nicht? FileNotFoundException?
Code ist unten angehängt:
package de.thws; // Von mir zum testen von Streams
import java.io.*;
public class PerStreamDateiEinlesen {
public static void main(String[] args) throws FileNotFoundException {
copyFileWithErrorHandling3Modularized();
}
public static void copyFileWithErrorHandling3Modularized()
{
// try-with-resource statement
try (InputStream fis = new FileInputStream("Hallo wie gehts.text");
OutputStream fos = new FileOutputStream("copy.txt");)
{
copyImproved(fis, fos);
}
catch (IOException e)
{
e.printStackTrace();
}
}
// Hier kopiere ich die Datei
static void copyImproved(InputStream is, OutputStream os) throws IOException
{
byte[] b = new byte[1024];
int n;
do
{
n = is.read(b); //kann maximal 1024 bytes lesen
if (n != -1) os.write(b, 0, n);
}
while (n != -1);
}
}
2 Antworten
- Falsche Dateiendung (du nutzt hier .text, während die Datei mit .txt endet.
- Versuch mal die Datei so umzubennen, dass sie keine Leerzeichen enthält. Es kann sein, dass du für den Dateinamen die Leerzeichen mittels \ escapen müsstest.
Zum einen liegt die Textdatei am falschen Ort. Sie muss dort liegen, wo das Programm schlussendlich ausgeführt wird, hier also den Ordner "Maven".
Zum anderen hat die Datei die Endung .txt und nicht wie in deinem Code .text.
Wenn man das so sieht, hast du natürlich Recht. Aber das ist nicht wie Dateipfade funktionieren. Die Datei befindet sich im Ordner thws.
So, ich hab jetzt die Datei Hallo wie gehts.txt in den Ordner Maven gelegt, so wie du gesagt hast. Dann hab ich meinen Code ausgeführt. Nun ist dort in dem Ornder Maven eine Datei copy.txt entstanden.
In Intellij kann ich die beiden Dateinen im Projektfenster gar nicht sehen, wenn ich dort auf den Maven Ordner klicke.
C:\Users\User\IdeaProjects\Maven\src\main\java\de\thws
an dem Pfad liegt die Datei. Dies ist im Ordner Maven
Ok. Danke für den Hinweis mit .text
"Zum einen liegt die Textdatei am falschen Ort. Sie muss dort liegen, wo das Programm schlussendlich ausgeführt wird, hier also den Ordner "Maven"."
Die Datei liegt doch in Maven/de/thws/lektion17....
Somit befindet sich die Datei doch im Ordner Maven?