2012-03-12 24 views
0

名前に変数を使用する特定のディレクトリにファイルを作成しようとしています。しかし、次の行でgetとIOExceptionを保持します。名前に変数を使用して新しいファイル名を作成する

File dir = new File("logs/" + s); 
dir.mkdirs(); 
File permfile = new File(dir, stamp + ".txt"); 
permfile.createNewFile(); 
boolean exist = permfile.createNewFile(); 

ご指摘いただきありがとうございます。私は家に帰ることができるファイルを書くことができれば、今この12時間にいました! :)

+0

正確にどのラインIOExceptionが投げていますか? – gobernador

+0

このファイル:ファイルpermfile =新しいファイル(dir、スタンプ+ ".txt"); –

+0

そして謝罪、疲れた。それは:permfile.createNewFile(); java.io.WinNTFileSystem.createFileExclusivelyで\t(ネイティブのファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません:これは、ファイルがすでに存在して示すことになるが、そうではありません –

答えて

0

編集: SRYは少し遅れて私のためにあるように見えるが、あなたのコードを試してみましたが、それは完全に働いた、例外がスローされない:

  try{ 
      String s = "foldername"; 
      String stamp = "filename"; 
      File dir = new File("logs/" + s); 
      dir.mkdirs(); 
      File permfile = new File(dir, stamp + ".txt"); 
      permfile.createNewFile(); 
      } 
      catch(Exception k) 
      { System.out.println("Oops");} 

たぶんエラーがどこかにありますか? Javadoc FileでCreateNewFile(あたりとして

+0

ありがとうございます。それも試しました。運がない –

0

)がチェック例外をスローします。

ある種のI/O例外が発生した checked vs unchecked exception

I/OException信号に関する

より。コードの下

試してみてください。

 try{ 
      String s = "foldername"; 
      String fName = "filename"; 
      File dir = new File("logs/" + s); 
      dir.mkdirs(); 
      File permfile = new File(dir + fName + ".txt"); 
      permfile.createNewFile(); 
      } 
      catch(Exception e) 
      { 
      e.printStackTrace(); 
      } 

貼り付けエラーログが発生した場合、それは原因を見つけるのに役立ちます。 Windowsがバックスラッシュ使用したときに、私が見ることができる

0

一つの可能​​性のある問題は、パスの区切り文字としてリテラル前方スラッシュを使用することです。あなたのシステムは、セパレータではなく名前の一部としてスラッシュを解釈している可能性があります.Windowsでは、スラッシュはillegal character for a filenameです。

完全にこの問題を回避するために、私は整理(自分ではなく、リテラルパスを構築する)あなたのdirファイルのための適切なコンストラクタnew File(String parent, String child)を使用して、セパレータをJavaのAPIを聞かせ、すなわち:

File dir = new File("logs", s); 

他の問題は、stampにファイルシステムのファイル名に不正な文字が含まれている可能性があるということです。

0

このようなタスクにはNIO APIを使用します。

Path dir = Paths.get("logs", s); 
Files.createDirectories(dir); 
Path permfile = dir.resolve(stamp + ".txt"); 
boolean exist = true; 
if(!permfile.toFile().exists()) { 
    Files.createFile(permfile); 
    exist = false; 
} 
関連する問題