2013-09-25 111 views
0

我試圖在該目錄內創建一個目錄和csv文件。創建目錄,但文件創建它給出了一個例外 這裏是我的代碼無法在Java中創建文件(IOException)

File dirName = new File("C:\\Umair\\Trace Bandwidth Statistics"); 
if (!dirName.exists()) 
    dirName.mkdir(); 
DateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); 
     File file = new File(dirName + "\\"+ df.format(new Date()) +"_Statistics.csv"); 
     if (!file.exists()) 
      file.createNewFile(); 

我得到這個例外java.io.IOException異常:文件名,目錄名或卷標語法不正確

任何想法?

感謝

回答

5

字符:沒有爲Windows文件名允許的,所以你不能在df.format(new Date())部分添加到文件名

下面是Windows中的文件名規則:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx

+0

爲什麼不順便? – Wearybands

+1

因爲微軟這麼說:-) http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx。我的猜測是,它與驅動器號中使用':'的事實有關。 – mavroprovato

+0

http://jackguide.com/the-filename-directory-name-or-volume-label-syntax-is-incorrect/請看這裏 – Yup

1

在Windows中不允許使用\/:*?"<>|這樣的字符作爲文件名。去除這些字符,並創建文件。

1

由於它是一個Windows文件系統,我假設它基於它包含非法字符而拒絕你的文件名。例如「:」

(此外,爲了安全起見,我使用mkdirs()而不是mkdir(),並且習慣於使用File.separator而不是\以防萬一您需要將應用程序移至env使用的/代替)

0

在Windows中,保留字符以下,不能在文件名中使用:

  • <(小於)
  • >(大於)
  • :(冒號)
  • 「(雙引號)
  • /(正斜槓)
  • \(反斜槓)
  • | (豎條或管道)
  • ? (問號)
    • (星號)

當您使用:的日期追加到,因此是沒有得到創建該文件的文件名的一部分。