Input/Output Files von A nach B kopieren

F

friednoodles

Aktives Mitglied
Hallo, ich habe in meinem Projekt einen Ordner der mehrere .htm Dateien enthält. Diese möchte ich in einen Ordner kopieren der in APPDATA liegt.
Bei fast allen meiner Versuche bekam ich eine NPE und bin mir nicht mehr sicher was ich noch probieren kann.

Beide Parameter die ich verwende sind vom Typ File, source zeigt direkt auf ein File innerhalb meines Projekts: projectFolder2\file.htm
dest zeigt auf den Ordner in dem ich das file haben möchte: C:\Users\user\AppData\Roaming\Microsoft\Htmfiles

Die Methode die ich verwende sieht wie folgt aus
Java:
    private static void copyFileUsingStream(File source, File dest) throws IOException {
        InputStream is = null;
        OutputStream os = null;
        try {
            is = new FileInputStream(source);
            os = new FileOutputStream(dest);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer, 0, length);
            }
        } finally {
            is.close();
            os.close();
        }
    }

Beim debuggen sehe ich, dass die Zeile mit dem Byte Array nicht mehr ausgeführt wird und der Code direkt zu finally springt, wo dann bei os.close die NPE auftaucht.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Wie sieht denn die NPE aus?


BTW: Nutz try-with-resources und spricht irgendwas gegen Files.copy oder InputStream.transferTo?
 
F

friednoodles

Aktives Mitglied
Wie sieht denn die NPE aus?


BTW: Nutz try-with-resources und spricht irgendwas gegen Files.copy oder InputStream.transferTo?

Java:
Exception in thread "main" java.lang.NullPointerException
    at myProject.copyFileUsingStream(myProject.java:364)
    at myProject.main(myProject.java:295)

Zeile 295 ist einfach der Aufruf in der Main und Zeile 364 ist die Zeile os.close(); aus dem ersten Post.

Falls es hilft, so komme ich auf meine zwei Parameter:
Java:
String startFolder = System.getenv("APPDATA");
String dest_folder = "Htmfiles";
File dir_htm_dest= new File(startFolder + "\\Microsoft\\" + dest_folder);

File dir_htm_source = new File(htmFiles); //htmFiles enthält den Ordnernamen innerhalb meines Projekts
File[] htmFileArray = dir_htm_source.listFiles();
for (File htmFile: htmFileArray ) {
copyFileUsingStream(htmFile, dir_htm_dest);
}
 
F

friednoodles

Aktives Mitglied
Oh, was ich eigentlich fragen wollte: fliegt noch eine andere, zb eine IOException? Die NPE wirst du mit try-with-resources los.


So wie ich es zuvor probiert hatte flog nur die NPE, keine andere Exception.
Mit try-with-resources wird die NPE tatsächlich nicht mehr geworfen, aber die Zeilen ab dem Byte Array werden trotzdem nicht ausgeführt. Benutze ich den Block so richtig?

Java:
    private static void copyFileUsingStream(File source, File dest) throws IOException {

        try (InputStream is = new FileInputStream(source); OutputStream os = new FileOutputStream(dest)) {
            
            byte[] buffer = new byte[1024];
            int length;
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer, 0, length);
            }
        } catch (IOException e) {
            Log.info("copy process failed");
        }
    }
 
K

kneitzel

Gast
Ich nehme einmal an, dass du "copy process failed" audgegeben bekommst.

Wieso gibst du da nicht im catch die ganze Exception aus? Also e.getMessage() ausgeben und auch e.printStackTrace() einbauen.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Ja, richtig benutzt wird das.
Fliegt wirklich keine Exception?

os kann im Code vorher nur null sein, wenn new FileOutputStream fehl schlägt - dann sollte es aber eine Exception geben.

dest ist, wenn ichs grad richtig sehe, keine Datei , sondern ein Ordner? Schreiben kannst du natürlich nur in Dateien, solltest dort also eine Datei angeben.
 
F

friednoodles

Aktives Mitglied
Ich nehme einmal an, dass du "copy process failed" audgegeben bekommst.

Wieso gibst du da nicht im catch die ganze Exception aus? Also e.getMessage() ausgeben und auch e.printStackTrace() einbauen.

Ja hast recht, hab das eben mal eingefügt und der Stacktrace sieht wie folgt aus:
Java:
java.io.FileNotFoundException: C:\Users\user\AppData\Roaming\Microsoft\Htmfiles(Zugriff verweigert)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at myProject.copyFileUsingStream(myProject.java:353)
    at myProject.main(myProject.java:296)
Verstehe absolut nicht warum nun der Zugriff verweigert ist...
 
F

friednoodles

Aktives Mitglied
M

M.L.

Top Contributor
java.io.FileNotFoundException: C:\Users\user\(..)
Heisst der Account/Ordner auch wirklich "user" oder ist das nur ein Platzhalter ? Stimmen die Zugriffsberechtigungen (Administrator, Standardnutzer,...) ?
 
K

kneitzel

Gast
Also wenn Du kein Files.copy verwenden willst, dann könntest Du da noch etwas Code hinzufügen:

Prüfung, ob dest ein Verzeichnis ist. Ist dies der Fall, dann wird das Ziel zusammengesetzt mittels Paths.get(dest.getAbsolutePath(), source.getName()) - das gibt dir einen Path zurück, der aus dem Pfad von dest und dem Filenamen von source besteht. Daraus ein File machen und schon hast Du das neue, richtige Ziel.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Png files nach auslesen von BMP ohne Inhalt Java Basics - Anfänger-Themen 2
C Wo speichere ich die Jar-Files zu JGoodies FormLayout? Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
J Kann man files in einer Klasse speichern. Java Basics - Anfänger-Themen 2
L Files verschieben in einen Ordner Java Basics - Anfänger-Themen 87
N Best Practice files[i].getAbsoluteFile() mit Sondezeichen im Vezeichnisnamen Java Basics - Anfänger-Themen 2
F ActionListener mit Files etc Java Basics - Anfänger-Themen 12
H Pfad Program Files\Common Files\Oracle\Java\javapath Java Basics - Anfänger-Themen 3
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
M DBF-Files und Encoding Java Basics - Anfänger-Themen 4
X Finde die Files über FTP nicht Java Basics - Anfänger-Themen 4
U Properties außerhalb des war-Files Java Basics - Anfänger-Themen 1
N Lesen eines files mit FILES.lines Java Basics - Anfänger-Themen 11
D CSV Files richtig zusammenführen Java Basics - Anfänger-Themen 3
U Java logging generiert unerwünschten files Java Basics - Anfänger-Themen 1
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
S Ordnerstrukturen durchsuchen und Files bearbeiten Java Basics - Anfänger-Themen 6
G Existenz eines Files Java Basics - Anfänger-Themen 1
N Files außerhalb eines des jar-files einlesen mac Java Basics - Anfänger-Themen 10
O Files eines Directories innerhalb eines JAR-Files auflisten Java Basics - Anfänger-Themen 0
S Input/Output .txt-Files NEBEN .jar Java Basics - Anfänger-Themen 3
B Relativer Pfad zwischen zwei Files Java Basics - Anfänger-Themen 2
F Speicherlast mehrere GB durch kleine png files? Java Basics - Anfänger-Themen 1
C xsd validation with xsd files with dependencies ("schemalocation") Java Basics - Anfänger-Themen 1
B Fehlerhafte XML-Files verschieben Java Basics - Anfänger-Themen 6
R Rekursive Methode, Files finden Java Basics - Anfänger-Themen 2
Kenan89 XML-Files erstellen wirft File not found Exception Java Basics - Anfänger-Themen 9
B Files.copy wirft Exeption Java Basics - Anfänger-Themen 2
V java nio Files.copy Java Basics - Anfänger-Themen 10
C Automatisches Ausfuehren einer Funktion beim Laden eines Jar files Java Basics - Anfänger-Themen 3
A JDK installieren jar-Files ausführen Java Basics - Anfänger-Themen 12
A Datei relativ zur Lage des jar-files lesen Java Basics - Anfänger-Themen 16
L Methoden Files.walkFileTree implementation Java Basics - Anfänger-Themen 3
6 JDK installieren Runnable Jar Files ausführen?! Java Basics - Anfänger-Themen 8
G NetBeans Contains files with errors Java Basics - Anfänger-Themen 14
M Input/Output Namen der Files aus einem Ordner MIT bestimmten Encoding auslesen? Java Basics - Anfänger-Themen 3
H Jar Files verwenden Java Basics - Anfänger-Themen 9
J Wie auf eine Datei innerhalb des JAR-Files zugreifen Java Basics - Anfänger-Themen 2
N Files mit Byte an Socket versenden Java Basics - Anfänger-Themen 2
G Inhalt Jar-Files anzeigen, incl. Methoden Java Basics - Anfänger-Themen 2
S Exception: Too many open files Java Basics - Anfänger-Themen 6
apple987123 JAR Files Funktionieren nicht Java Basics - Anfänger-Themen 6
B Files aus Verzeichnis zählen Java Basics - Anfänger-Themen 9
M Online-Java-Games offline spielen? / Jar-Files zum laufen bringen? Java Basics - Anfänger-Themen 6
E ResourceBundles in Jar-Files Java Basics - Anfänger-Themen 5
M Sha256-Wert eines Files bestimmen Java Basics - Anfänger-Themen 13
S Hilfe es werden keine class files erstellt Java Basics - Anfänger-Themen 5
Y Applet lokal executable machen, externe Files inkludieren Java Basics - Anfänger-Themen 8
S String repräsentation eines XML-Files für Textarea formatieren. Java Basics - Anfänger-Themen 2
J Anfänger-Frage zu jar-Files / Manifest.mf / Classpath Java Basics - Anfänger-Themen 16
B Verzeichnisse und Dateien in JAR Files Java Basics - Anfänger-Themen 7
S Kein Zugriff auf Files in Jar-Datei Java Basics - Anfänger-Themen 4
G Zusammenfassung mehrerer jar-Files Java Basics - Anfänger-Themen 3
B Erstellen von tar Files Java Basics - Anfänger-Themen 2
G Teil eines Files einlesen und vergleichen Java Basics - Anfänger-Themen 4
U Habe meine .class files gelöscht. Java Basics - Anfänger-Themen 3
T Jar: Zugriff auf Dateien inner- unter außerhalb d. jar-Files Java Basics - Anfänger-Themen 3
M java mehrere jar files uebergeben Java Basics - Anfänger-Themen 5
L Alle Files eines Directories einlesen Java Basics - Anfänger-Themen 6
V Sprache umschalten mit properties-files mit KSKB Java Basics - Anfänger-Themen 3
G Pfad des Jar-Files ermitteln bzw. wo Datenbank speichern Java Basics - Anfänger-Themen 4
D Files aus Directory lesen Java Basics - Anfänger-Themen 2
roflomfg Parameterübergabe in in "*.jar" files möglich? Java Basics - Anfänger-Themen 8
P Import jar files: Wohin? Java Basics - Anfänger-Themen 2
J Mit JDOM HTML Files erzeugen? Java Basics - Anfänger-Themen 7
M Path eines Files Java Basics - Anfänger-Themen 24
G tomcat und class files Java Basics - Anfänger-Themen 5
G class Files zu exe ---> decompilieren? Java Basics - Anfänger-Themen 2
M Files löschen - alle, ausser das größte! Java Basics - Anfänger-Themen 3
J Werte eines XML Files überschreiben Java Basics - Anfänger-Themen 7
B erweiterte jar files - verbinden Java Basics - Anfänger-Themen 4
P JFileChooser soll nur .txt files anzeigen Java Basics - Anfänger-Themen 5
D Files Readen und Substring Java Basics - Anfänger-Themen 5
M Properties ausserhalb von jar files Java Basics - Anfänger-Themen 3
J Drucken von files Java Basics - Anfänger-Themen 4
F Java-Programm in mehreren files Java Basics - Anfänger-Themen 6
B JFileChooser für Files and Directories Java Basics - Anfänger-Themen 3
M Audio Files mit Base64 De-/Endcodieren Java Basics - Anfänger-Themen 5
C letzte Zeilen eines Files auslesen Java Basics - Anfänger-Themen 3
A Einbindung von .wav files. Java Basics - Anfänger-Themen 8
F Hilfe beim erstellen von Jar files! Java Basics - Anfänger-Themen 2
M alle Files aus einem Verzeichnis finden Java Basics - Anfänger-Themen 15
A Existenz eines Files abfragen Java Basics - Anfänger-Themen 13
G speichern von files Java Basics - Anfänger-Themen 2
A Einige Fragen zu Files Java Basics - Anfänger-Themen 2
D JAR-Files ausführbar machen Java Basics - Anfänger-Themen 28
Z prob beim erstellen eines jar files mit eclipse Java Basics - Anfänger-Themen 4
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
M Anzahl Schleifendurchgänge nach x Sekunden anzeigen Java Basics - Anfänger-Themen 2
C Lotto 3, 4, 5, 6 Richtige nach x Ziehungen ermittelt.. Java Basics - Anfänger-Themen 7
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
R JDK installieren Durcheinander nach installation von SE 14.02 Java Basics - Anfänger-Themen 6
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
B DateTimeFormatter nach LocalDateTime, wenn dd.MM.yyyy oder dd.MM.yyyy mm:hh Java Basics - Anfänger-Themen 5
1 main-Methode erweitern, Nachfrage nach wiedeholung Java Basics - Anfänger-Themen 2
G unklares Verhalten nach Instanzierung neuer Klasse Java Basics - Anfänger-Themen 3
S Wohin kommt das „abstract“? Vor oder nach „public“/ „private“ /... Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben