2017-02-28 16 views
-1
import java.io.File; 
import java.io.IOException; 

public class TestFile { 
    public static void main(String[] args) { 
     String separator = File.separator; 
     String filename = "myFile.txt"; 
     String directory = "mydir1" + separator + "mydir2"; 

     File f = new File(directory,filename); 
     if (f.exists()) { 
      System.out.print("filename:" + f.getAbsolutePath()); 
      System.out.println("filesize:" + f.length()); 
     } else { 
      f.getParentFile().getParentFile().mkdir(); 
      try{ 
       f.createNewFile(); 
      }catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

"mydir1"というフォルダの下にファイル "myFile.txt"を作成しようとしていますが、コンソールに "指定されたパスが見つかりません"誰かが私にどこを間違えたと言えるでしょうか?前もって感謝します。Java - IOException:システムが指定されたパスを見つけることができません

+0

これは、 'mydir1'にファイルを作成する強力な方法です。なぜ「mydir2」で気にするのですか?あなたのスタックトレースはあなたに多くの情報を与えます**(あなたの質問に含まれるべきです!)**。私は 'f.getParentFile()。getParentFile()。mkdir();'が問題を引き起こしていると思われますが、そこに3つの操作があるので、どちらが問題かはっきりしないかもしれません。 Instinctは「存在しないファイルの親をどうやって得ることができますか?」と言っていますが、これは私の疑わしい性質であり、最近のJava IO作業の欠如かもしれません;-) – John3136

+0

親ディレクトリは存在しますか? – haifzhan

答えて

1

mydir1のみ作成していますが、mydir2では作成していないようです。すべての必要なparrentディレクトリを作成しようとします

f.getParentFile().mkdirs(); 

File.mkdirs

は、私が代わりに

f.getParentFile().getParentFile().mkdir(); 

のようなものを試してみる提案することができます。

+0

指定されたディレクトリに新しいファイルを作成したい場合は、File f = new File(directory、filename)に入れたディレクトリパスと同じディレクトリパスを見つけなければなりません。パスはf.getParentFile()。getParentFile()。mkdir()で行います。私の悪い英語を申し訳ありませんが、私は何を言おうとしているのか理解して欲しいです。 – User3301

+0

あなたは存在しないディレクトリにファイルを作成することはできません。ディレクトリ構造を最初に作成する必要があります。 – Kiryl

+0

さて、私はそれを取得します。あなたの説明をありがとう。 – User3301

関連する問題