有一点createNewFile()并不是因为文件存在而发生io异常,io异常是由本地方法在创建文件时所发生的,可以去了解一下c创建文件以及文件夹的机制

解决方案 »

  1.   

    和path有关,你可以试下,path= C:/和path=c:/cs.txt
      

  2.   

    createNewFile() 时可能它的某个父文件夹不存在 比如c:/a/b/1.txt 如果C盘下没有一个文件夹叫 a 的话,就会抛如下异常:
       Exception in thread "main" java.io.IOException: 系统找不到指定的路径。
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:883)
    at cn.test.Ts.main(Ts.java:13)因为这个Native Method没有创建父文件夹的功能为了创建这个文件 就要调用 someFile.getParentFile().mkdirs()方法
    然后就能创建 因为是mkdirs()方法会递归的调用自身:“&& (parent.mkdirs() " ,直到要创建的文件夹的父文件夹存在:
        if (mkdir()) {          return true;      } 
    所以不会发生找不到路径的情况 就不需要抛ioexception
    找不到路径我就一直创建
      

  3.   

    老兄,我最近也刚好碰到你这个问题,debug了很久,最后才发现:
    1.可能是路径问题。
    *2.可能是你之前对目录调用了createNewFile,如dir="C:/dir";dir.createNewFile().
    这样,就生成了一个没有类型的文件dir,然后你在dir文件下建立文件“a.txt”,那肯定会报not a directory错误。
    因为dir是没有类型的文件而不是文件夹。因此,你不该对文件夹路径调用createNewFile,这样会带来隐藏的问题。