2011-09-15 14 views
1

私はjava Windows 7で新しいファイルを作成できませんでしたか?

file.createNewFile() 

を使用してWindows 7で新しいファイルを作成しようとしている「Mが、ファイルが作成されていないと私は次の例外

Message: 
The system cannot find the path specified 
Stack Trace: 
[java.io.IOException: The system cannot find the path specified, 
    at java.io.WinNTFileSystem.createFileExclusively(Native Method), 
    at java.io.File.createNewFile(File.java:883), 
    at com.mercury.mtf.actions.file.CreateEmptyFileTask.execute(CreateEmptyFileTask.java:56), 
    at com.mercury.mtf.actions.file.CreateEmptyFileAction.execute(CreateEmptyFileAction.java:42), 
    at com.mercury.mtf.core.AbstractAction.run(AbstractAction.java:50), 
    at com.mercury.mtf.core.Unit.runUnitAction(Unit.java:347), 
    at com.mercury.mtf.core.Unit.executeUnitAction(Unit.java:176), 
    at com.mercury.mtf.core.Unit.run(Unit.java:121), 
    at com.mercury.mtf.core.execution.DefaultUnitExecutor.call(DefaultUnitExecutor.java:24), 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303), 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138), 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98), 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207), 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886), 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908), 
    at java.lang.Thread.run(Thread.java:619)] 

を得た私は、パスが存在することを確信しているが、私は、フォルダが読み取り専用としてマークされていることに気づいた。私は読み取り専用のフラグを削除しようとしましたが、これを動作させることはできません。

+0

パスはどのように見えますか? –

答えて

4

パス区切り文字が正しいことを確認してください。単一のスラッシュまたは2つのバックスラッシュを使用できます。 File newFile=new File(folderName+chipItems[i], "w");を使用して

File.createTempFile("prefix", "suffix") 
+0

これは 'File.separator'または' File.separatorChar'を使って解決できます。ところで、これら2つの静的最終フィールドは、Java命名規則に従いません。 –

+0

ああ、まさに!私はFile.separatorCharプロパティがあるのを忘れていました。上記のコードは、私が言っただろう汚い修正です;-) – thandasoru

0

は、ファイルには、この機能を使用することができますし、すべてのアクセス許可の問題を忘れることができます一時的なものである場合。それはOKです。 Unix touchコマンドのような機能を提供したい場合は、ファイルモードを避けてください。

0

使用File newFile=new File(folderName+chipItems[i]);ではなく、たとえば、

File f = new File("C:\\Documents and Settings\\thandasoru\\My Documents\\temp.txt"); 
f.createNewFile(); 
関連する問題