2013-09-25 92 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中,保留字符以下,不能在文件名中使用:

  • <(小于)
  • >(大于)
  • :(冒号)
  • “(双引号)
  • /(正斜杠)
  • \(反斜杠)
  • | (竖条或管道)
  • ? (问号)
    • (星号)

当您使用:的日期追加到,因此是没有得到创建该文件的文件名的一部分。