无法用Java创建文件(IOException)

时间:2013-09-25 10:27:55

标签: java file date

我正在尝试在该目录中创建目录和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:文件名,目录名或卷标语法不正确

有什么想法吗?

由于

4 个答案:

答案 0 :(得分:6)

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

以下是Windows的文件名规则:

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

答案 1 :(得分:1)

Windows中不允许使用\/:*?"<>|等字符作为文件名。剥离这些字符,然后创建文件。

答案 2 :(得分:1)

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

(另外,为了安全起见,我使用mkdirs()而不是mkdir()。还习惯使用File.separator而不是\以防你需要将你的应用程序移动到env使用/而不是)

答案 3 :(得分:0)

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

  • &LT; (小于)
  • &GT; (大于)
  • :(冒号)
  • “(双引号)
  • /(正斜线)
  • \(反斜杠)
  • | (竖杆或竖管)
  • ? (问号)
    • (星号)

当您使用:作为附加到文件名的日期的一部分时,因此文件未被创建。