2012-05-27 42 views
9

我正在编写一个程序,我试图在当前目录中创建一个新的文本文件,然后向它写入一个字符串。但是,试图创建的文件,这个代码块时:java.io.IOException:系统找不到指定的路径写入文本文件

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

是给我这个错误消息:

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) 

正因为如此,我不能写入文件,因为它自然是不存在的。我在这里做错了什么?

+1

如何'filePath'构建? – hmjd

+0

File filePath = fc.getSelectedFile(); – Inglonias

+0

'outputText'构造之前'filePath.getParentFile()'的值是什么? – hmjd

回答

5

如果你使用File类已经工作,可以考虑使用它的全部潜力,而不是做了一半的工作你自己:

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

'java.io.FileNotFoundException::: {031E4825-7B94-4DC3-B131-E946B44C8DD5} \ Pictures.library-ms \ Decrypted.txt(系统找不到指定的路径)'会发生什么情况。请记住,这是图片库。 – Inglonias

+0

我正在将此标记为答案,因为它的工作原理和我收到的错误消息不是我的错,而是Windows的错误和库的处理方式。感谢您的帮助,每个人! – Inglonias

2

filePath.getParentFile()的价值是多少?您使用什么操作系统?这可能是一个更好的办法是在一个系统无关的方式加入两个路​​径,像这样:

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

虽然这摆脱了错误消息,我没有看到我使用的目录中的文件。它在哪里? – Inglonias

+0

@Inglonias太棒了!谢谢你:) –

+0

其实,在进一步的研究中,这只会删除错误信息。我没有看到文件 – Inglonias

0

应该由文件路径指向的文件的兄弟创建。

例如

如果

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

那么就应该是在测试目录中创建。

+0

考虑使用'File.separator'而不是那些被神遗弃的退出反斜杠。 – ryvantage

相关问题