Input/Output Problem bei Datei verschiebung mit File.move und Paths.get()

CCFuchs85

Mitglied
Hallo,
es geht bei meinem Problem darum das ich eine Datei aus dem Ordner x in den Order y kopieren will. Zu dem Thema habe ich mich jetzt schon durch gegooglet und will es eigentlich mit File.move umsetzen.
File.move erwartet jedoch zwei Path Variablen, und dabei beginnt mein Problem.
Wenn ich einen Path mittels Paths.get("pfad") erstellen will meckert mein Eclipse das Paths.get() einen String und einen String[] erwartet . Alle Beispiele die ich durch suchen gefunden habe arbeiten jedoch nur mit Paths.get(String).
Ich versuche es gerade mit einem Test projekt zum laufen zubekommen.
Ich habe mittlerweile schon einige Möglichkeiten durchprobiert, wie man an den auskommentierten Zeilen erkennen kann.

Java:
import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;


public class Main {
    public static void main(String[] args) throws IOException{
        FileSystem system = FileSystems.getDefault();
        //Path moveSourcePath = system.getPath("\\Users\\c.fuchs\\Documents\\test.txt", null);
        //Path moveTargetPath = system.getPath( "\\Users\\c.fuchs\\Documents\\test-Kopie.txt", null );
        //Path moveSourcePath = system.getPath("C:" + File.separator + "Users" + File.separator + "c.fuchs" + File.separator + "Documents" + File.separator + "test.txt", null);
        //Path moveTargetPath = system.getPath( "C:" + File.separator + "Users" + File.separator + "c.fuchs" + File.separator + "Documents" + File.separator + "test-Kopie.txt", null );
        //Path testSourcePath = Paths.get(URI.create("file:/C:/Users/c.fuchs/Documents/text.txt"));
        //Path testTargetPath = Paths.get(URI.create("file:/C:/Users/c.fuchs/Documents/text-Kopie.txt"));
        //Path moveSourcePath = Paths.get( "C:" + File.separator + "Users" + File.separator + "c.fuchs" + File.separator + "Documents" + File.separator + "text.txt", null );
        //Path moveTargetPath = Paths.get( "C:" + File.separator + "Users" + File.separator + "c.fuchs" + File.separator + "Documents" + File.separator + "text-kopie.txt", null );
        Path testSourcePath = FileSystems.getDefault().getPath("///Users/c.fuchs/Documents/test.txt", null);
        Path testTargetPath = FileSystems.getDefault().getPath("///Users/c.fuchs/Documents/test-kopie.txt",null);
        Path target_dir = FileSystems.getDefault().getPath("///Users/c.fuchs/Documents",null);
        System.out.println(testSourcePath);
        System.out.println(testTargetPath);
        Files.move( testSourcePath, testTargetPath, null);
      
    }
}

Wenn ich den Code ausführe erhalte ich:

Exception in thread "main" java.lang.NullPointerException
at sun.nio.fs.WindowsFileSystem.getPath(Unknown Source)
at Main.main(Main.java:20)

Ich habe zwei vermutungen:
1. Es hat irgendwas mit den Dateiberechtigungen unter Windows zutun.
2. Ich bin zu blöd.

Daher meine Bitte und mein Dank im Vorraus an euch.
Könnt ihr mir bei den folgenden Fragen helfen:
1. Wieso erwartet Paths.get() String und String[] von mir. In der Literatur finde ich habe nur Beispiele mit nur einem String?
2. Was mache ich falsch? bzw. Welche Info bräuchte man um zusehen das es am Dateisystem liegt?
 

JStein52

Top Contributor
Nein, du kannst bei diesen gets auch überall nur einen String angeben. Die exakte Beschreibung dazu lautet:

public static Path get(String first, String... more)

Converts a path string, or a sequence of strings that when joined form a path string, to a Path. If more does not specify any elements then the value of the first parameter is the path string to convert. If more specifies one or more elements then each non-empty string, including first, is considered to be a sequence of name elements (see Path) and is joined to form a path string. The details as to how the Strings are joined is provider specific but typically they will be joined............

Und so wie ich das sehe darfst du eben nicht null als weiteren Parameter angeben. Das führt wahrscheinlich genau zu deiner NullPointerException. Also einfach überall die zusätzlichen null-Parameter weglassen.

Edit: Uuups, zu langsam :):)
 

CCFuchs85

Mitglied
Ja so wie ihr es beschreibt verstehe ich .getPath auch, und so kenne ich es eigentlich auch von java.
Aber wenn ich nur einen String eingebe wird .getPath rot unterstrichen und ich erhalte folgende Meldung:

The method getPath (String, String[]) in the type FileSystem is not applicable for the arguments (String)

Für .get erhalte ich wenn ich den null Wert weglasse:

The method get(URI) in the types Path is not applicable for the arguments (String)

Als Lösung gibt es dann den Vorschlag es in .get(String, String[]) zu ändern.
 

Joose

Top Contributor
Folgender Code wird vom Compiler nicht beanstandet:
Java:
FileSystems.getDefault().getPath("");

Vargs lässt 0, 1 oder mehrere Argumente zu.
 

CCFuchs85

Mitglied
Anhand der ganzen Beispiele im Internet und sogar in der gedruckten Literatur glaube ich ja dass dies alles richtig ist mit nur einem String.
Die Frage ist dann nur einfach: Wo liegt dann bei mir der Fehler? Nach was müsste ich in meinen System/Eclipse Einstellungen schauen um evtl. diese Fehlermeldung nicht mehr erhalte. Sie verhindert ja auch das ich das Programm laufen lasse.
 

JStein52

Top Contributor
Bei mir ist das auch so wie bei Joose. Hast du in den eclipse-Einstellungen für dein Projekt irgendwas spezielles eingestellt ? Ich habe mir meine gerade mal angeschaut und da steht alles auf default. Andererseits finde ich auch keine Einstellung die irgendwas mit diesen VarArgs zu tun hat. Mhmmm, wenn du in eclipse mal alles bis zum letzten Punkt löschst und dir die passende get-Methode aus seiner Vorschlagsliste nimmst ??
 

CCFuchs85

Mitglied
Den Vorschlag von JStein52 habe ich einmal ausprobiert.
Wenn ich es mit FileSystems.getDefault().getPath() probiere erhalte ich als Vorschlag:
.getPath(String arg0, String[] arg1)

Wenn ich diesen wähle undnur einen String übergebe erhalte ich die gleiche Fehlermeldung wie zuvor beschrieben und er gibt mir als Vorschlag es entweder auf (String, String) zu ändern oder:
change .getPathMatcher(..)

Wenn ich es mit Paths versuche erhalte ich als Vorschläge:
.get(URI arg0)
.get(String arg0, String[] arg1)

.get(String) führt auch wieder nur zur Fehler anzeige und folgendem Vorschlag:
+Add argument to match 'get(String, String[])'

In beiden Fällen ist es so, dass bei Eingabe nur eines Strings Eclipse die Ausführung verweigert mit dem Hinweis darauf das Fehler existieren.

In den Eclipse Einstellungen habe ich bewusst selbst nichts vorgenommen. Aber vielleicht hat ja jemand einen Vorschlag wo ich dort mal schauen könnte, ob ich irgendwann mal unbewusst was verstellt habe.
 

JStein52

Top Contributor
Sehr merkwürdig, bei mir sehen auch die Vorschläge von Eclipse anders aus, z.B. beim get:

get(String arg0, String... arg1)

Was hast du denn für eine Java-Version ? Meines ist Java 8.
 

CCFuchs85

Mitglied
Version 8 Update 51

Aber ich habe gerade mal geschaut vielleicht ist auch meine Eclipse Version zualt:
Version: Kepler Service Release 2
Build id: 20140224-0627
 

CCFuchs85

Mitglied
Hallo Klaus,

an der Stelle muss ich jetzt gestehen das man mich ruhig als Noob bezeichnen kann.
Eine Einstellung welche Compiler Version verwendet wird habe ich nicht gefunden.
Das einzige das ich unter Preferences->Java->Compiler gefunden habe war:
CDC - 1.1/Foundation-1.1
und
Compiler compliance Level 1.7

Hilft das schon weiter?
 

VfL_Freak

Top Contributor
Dann ist Dein Java8 nicht (richtig) zugeordnet!
Dann schau mal im Build Path nach:
- Kontextmenü (= rechte Maustaste im PackageExplorer) auf Dein Projekt
- "Build path" / "add libraries"
- dort "JRE System Library" auswählen und auf "next" klicken
- in der nächsten Maske das gesuchte JRE wählen und "finish" anklicken !

Gruß Klaus
 

CCFuchs85

Mitglied
Danke MWin123 für deine freundliche Antwort und genau da dies nicht so schwer ist wurde das sowohl gestern als auch heute morgen bereits gemacht.

@VfL_Freak deine Schritte habe ich befolgt aber es ist nur die jre1.8.0.45 auf diesem System installiert und es kann auch keine andere ausgewählt werden.
 

MWin123

Bekanntes Mitglied
Aber ich habe gerade mal geschaut vielleicht ist auch meine Eclipse Version zualt:
Version: Kepler Service Release 2
Build id: 20140224-0627
Danke MWin123 für deine freundliche Antwort und genau da dies nicht so schwer ist wurde das sowohl gestern als auch heute morgen bereits gemacht.
Vor 3 Stunden hattest du ja noch die Version von 2013 (Kepler) und du hast nicht erwähnt, dass du ein Update machst.
(Kepler unterstützt Java 8 nur mit einem zusätzlichen Patch)

Version 8 Update 51
@VfL_Freak deine Schritte habe ich befolgt aber es ist nur die jre1.8.0.45 auf diesem System installiert und es kann auch keine andere ausgewählt werden.
Welche Version ist nun oben?
 

CCFuchs85

Mitglied
Also ich bin eben noch mal hergegangen und habe mir noch mal die Installation der JDK 8.51 gezogen und installiert.

Jetzt kann ich in Eclipse immerhin schon mal die jre1.8.0.51 auswählen.
Beim Compiler kann ich immer noch nur 1.7 auswählen und das Problem besteht weiterhin.

Um auch noch die Version von Eclipse auszuschliessen habe ich mir eben noch mal die aktuelle Version von Kepler runtergeladen und noch mal die Updatefunktion genutzt. Ergebniss bleibt das gleiche.

Ich habe es auch mit der aktuellen Version von Mars versucht und erhalte immer noch den gleichen Fehler.
 

MWin123

Bekanntes Mitglied
Mit updaten war nicht gemeint, dass du weiterhin eine Version verwendest, die nicht mehr unterstüzt wird.
Du sollst die aktuelle Version (Mars) verwenden.

Deinstallier mal alle alten Versionen von Eclipse und geh ein Tutorial durch, wie man Eclipse aufsetzt.
 

CCFuchs85

Mitglied
Ich habe es auch mit der aktuellen Version von Mars versucht und erhalte immer noch den gleichen Fehler
Aber weil ich ja erst mal alles ausprobieren will habe ich heute morgen alles noch mal runter geschmissen und neu installiert.
Habe jetzt nur folgende Eclipse Version drauf:
Eclipse IDE for Java Developers

Version: Mars Release (4.5.0)
Build id: 20150621-1200

Und kann den Compiler nun auch auf 1.8 umstellen.....
Aber was soll ich sagen es kommt immer noch:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method get(URI) in the type Paths is not applicable for the arguments (String)
The method getPath(String, String[]) in the type FileSystem is not applicable for the arguments (String)
The method getPath(String, String[]) in the type FileSystem is not applicable for the arguments (String)

at Main.main(Main.java:20)

Ich weiss net mehr weiter vor allem da ich das Problem nur mit diesen Funktionen habe. Alles andere was ich sonst so mache funktioniert ja wunderbar.
 

MWin123

Bekanntes Mitglied
Probier mal:
Java:
Path p = Paths.get( "C:/Windows/Fonts/" );
System.out.println( p.toString() ); // C:\Windows\Fonts
System.out.println( p.isAbsolute() ); // true
System.out.println( p.getRoot() ); // C:\
System.out.println( p.getParent() ); // Fonts
System.out.println( p.getNameCount() ); // 2
System.out.println( p.getName(p.getNameCount()-1) ); // Fonts
 

CCFuchs85

Mitglied
Ok das funktioniert und hat mich jetzt auch darauf gestoßen wo mein Problem lag vielen Dank @MWin123
Ich habe deinen Code mal in ein neues Projekt eingetragen. Bisher hatte ich die Compiler Einstellungen nur für Eclipse überprüft. Dort war ja 1.7 bzw. 1.8 eingetragen.
Da es in dem neuen Projekt funktioniert hat, kam ich jetzt mal auf den Gedanken mir vielleicht doch mal die Proberties des Projektes und nicht nur die von Eclipse anzuschauen.

In dem alten Projekt wo der Fehler aufgetretten ist war ausgewählt
Use compliance from execution environment 'CDC-1.1/Foundation-1.1' on the Java Build Path
Das führte dazu das als Compiler compliance level 1.4 ausgewählt war. Wenn ich diesen Hacken entferne kann ich den Compiler auch auf 1.8 umstellen, und dann geht es.
Was ich nur nicht verstehe: Wenn ich den Java Build Path aufrufe waren dort trotzdem die Java Bibliotheken von 8.51 ausgewählt.

Nun dann noch mal vielen Dank für eure Hilfe und entschuldigt das ich euch evtl. erst falsch verstanden habe, und an der falschen Stelle nach geschaut habe.
 

Joose

Top Contributor
Was ich nur nicht verstehe: Wenn ich den Java Build Path aufrufe waren dort trotzdem die Java Bibliotheken von 8.51 ausgewählt.

Java ist abwärtskompatibel => sprich mit jeder neuen Version bleiben die alten Programme lauffähig. Dadurch hat man den Vorteil das du nicht für jedes Java Program eine andere Java Version installieren musst, sondern es reicht die aktuellste.
 

CCFuchs85

Mitglied
Java ist abwärtskompatibel => sprich mit jeder neuen Version bleiben die alten Programme lauffähig. Dadurch hat man den Vorteil das du nicht für jedes Java Program eine andere Java Version installieren musst, sondern es reicht die aktuellste.
Das war mir soweit auch bekannt nur verstehe ich nicht wieso dann immer noch die alte Compiler compliance eingestellt bleibt.
 

Joose

Top Contributor
Bei Projekterstellung dürfte es so eingestellt worden sein (von der IDE?), wenn du es selbst nicht händisch änderst wird es keiner tun ;) (auch nicht wenn sich deine Java Version aktualisiert)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
T Problem mit gzip Stream und Ende der Datei Allgemeine Java-Themen 2
L Problem bei ausführbarer jar Datei mit Unicode-Zeichen Allgemeine Java-Themen 4
J Problem beim Auslesen einer Datei vom Server Allgemeine Java-Themen 4
N Problem: Datei sperren um dann hineinzuschreiben Allgemeine Java-Themen 2
Developer_X Aus Datei in Arrays laden-Problem Allgemeine Java-Themen 5
M Problem mit Zeichen aus einer Datei auslesen Allgemeine Java-Themen 2
F CP Problem Batch Datei Allgemeine Java-Themen 6
A Problem mit Öffnen einer Datei Allgemeine Java-Themen 3
A Problem mit dem Auslesen aus einer Datei Allgemeine Java-Themen 4
S Problem mit jar-Datei Allgemeine Java-Themen 9
E Problem beim Anlegen einer Datei Allgemeine Java-Themen 4
TRunKX Problem mit jar Datei Allgemeine Java-Themen 5
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
B Problem bei Datei einlesen (Applet) Allgemeine Java-Themen 4
B Problem bei Datei laden Allgemeine Java-Themen 3
W Problem mit Datenmanipulieren aus Datei Allgemeine Java-Themen 7
G 180 MB CSV-datei einlesen. Problem! Allgemeine Java-Themen 14
R Problem mit .jar Datei Allgemeine Java-Themen 2
S Problem bei exportieren der *.jar datei Allgemeine Java-Themen 16
M Codepage Problem (Vertauscht Zeichen beim Lesen aus Datei) Allgemeine Java-Themen 3
C Problem mit Klassen aus .jar Datei Allgemeine Java-Themen 2
C Problem mit Class.getResource() in einer Jar-Datei Allgemeine Java-Themen 4
B problem beim erstellen einer ausführbaren jar-datei Allgemeine Java-Themen 5
S Problem mit JAR-Datei Allgemeine Java-Themen 11
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben