2012-05-27 7 views
9

Ich schreibe ein Programm, wo ich versuche, eine neue Textdatei im aktuellen Verzeichnis zu erstellen, und schreiben Sie eine Zeichenfolge darauf. Wenn jedoch versucht, die Datei, diesen Code-Block zu erstellen:java.io.IOException: Das System kann den angegebenen Pfad nicht finden Schreiben einer Textdatei

//Create the output text file. 
File outputText = new File(filePath.getParentFile() + "\\Decrypted.txt"); 
try 
{ 
    outputText.createNewFile(); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

gibt mir diese Fehlermeldung:

java.io.IOException: The system cannot find the path specified 
    at java.io.WinNTFileSystem.createFileExclusively(Native Method) 
    at java.io.File.createNewFile(Unknown Source) 
    at code.Crypto.decrypt(Crypto.java:55) 
    at code.Crypto.main(Crypto.java:27) 

dies, weil ich nicht in die Datei schreiben kann, weil es natürlich nicht existiert . Was mache ich hier falsch?

+1

Wie wird 'filePath' konstruiert? – hmjd

+0

Datei filePath = fc.getSelectedFile(); – Inglonias

+0

Was ist der Wert von 'filePath.getParentFile()' kurz bevor 'outputText' konstruiert wird? – hmjd

Antwort

5

Wenn Sie mit der File-Klasse arbeiten bereits, sollten ihr volles Potenzial mit sich stattdessen auf der eigenen Hälfte die Arbeit tun:

File outputText = new File(filePath.getParentFile(), "Decrypted.txt"); 
+0

'java.io.FileNotFoundException: :: {031E4825-7B94-4DC3-B131-E946B44C8DD5} \ Bilder.library-ms \ Decrypted.txt (Das System kann den angegebenen Pfad nicht finden)' ist, was passiert. Denken Sie daran, dies ist die Bilder-Bibliothek. – Inglonias

+0

Ich markiere dies als die Antwort, weil es funktioniert und die Fehlermeldungen, die ich bekomme, sind nicht meine Schuld, sondern die Schuld von Windows und die Art, wie Bibliotheken behandelt werden. Vielen Dank für Ihre Hilfe! – Inglonias

2

Was ist der Wert von filePath.getParentFile()? Welches Betriebssystem benutzen Sie? Es könnte eine bessere Idee, beide Pfade in einem systemunabhängigen Art und Weise zu verbinden, wie folgt aus:

filePath.getParentFile() + File.separator + "Decrypted.txt" 
+1

Während das die Fehlermeldung los wurde, sehe ich die Datei nicht in dem Verzeichnis, das ich verwendet habe. Wo ist es? – Inglonias

+0

@Inglonias großartig! danke auch :) –

+0

Eigentlich, bei weiterem Studium, entfernte dies nur die Fehlermeldung. Ich sehe nicht die Datei – Inglonias

0

Es sollte als Geschwister der von filePath wies Datei erstellt werden.

zum Beispiel, wenn

File filePath = new File("C:\\\\Test\\\\a.txt"); 

Dann sollte es unter Test dir erstellt werden.

+0

Betrachten Sie 'File.separator' im Gegensatz zu diesen gottverlassenen beendeten Backslashes. – ryvantage