0

我正在尝试在该目录中创建一个目录和 csv 文件。目录已创建,但在文件创建时出现异常这是我的代码

 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: The filename, directory name, or volume label syntax is wrong

任何的想法?

谢谢

4

4 回答 4

6

Windows 的文件名中不允许使用该字符:,因此您不能将df.format(new Date())部分添加到文件名中

以下是 Windows 的文件名规则:

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

于 2013-09-25T10:30:10.407 回答
1

\/:*?"<>|Windows 中的文件名不允许使用类似字符。去掉这些字符,文件将被创建。

于 2013-09-25T10:32:59.163 回答
1

由于它是一个 Windows 文件系统,我假设它基于包含非法字符而拒绝您的文件名。例如“:”

(另外,顺便说一句,为了安全起见,我使用 mkdirs() 而不是 mkdir()。还要习惯使用 File.separator 而不是 \,以防您需要将应用程序移动到使用 / 而不是 的环境中)

于 2013-09-25T10:34:16.970 回答
0

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

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

由于您将:其用作附加到文件名的日期的一部分,因此不会创建文件。

于 2013-09-25T10:34:49.737 回答