文本文档正在成为文件夹

时间:2016-01-27 07:54:48

标签: java file

这是我的班级,我做错了什么。为什么我的文本文档成为文件夹。请解释发生了什么以及如何纠正它。谢谢

public class InputOutput {

    public static void main(String[] args) {

        File file = new File("C:/Users/CrypticDev/Desktop/File/Text.txt");
        Scanner input = null;


        if (file.exists()) {
            try {
                PrintWriter pw = new PrintWriter(file);
                pw.println("Some data that we have stored");
                pw.println("Another data that we stored");

                pw.close();
            } catch(FileNotFoundException e) {
                System.out.println("Error " + e.toString());
            }
        } else {
            file.mkdirs();
        }

        try {
            input = new Scanner(file);

            while(input.hasNext()) {
                System.out.println(input.nextLine());
            }
        } catch(FileNotFoundException e) {
            System.out.println("Error " + e.toString());
        } finally {
            if (input != null) {
                input.close();
            }
        }
        System.out.println(file.exists());
        System.out.println(file.length());
        System.out.println(file.canRead());
        System.out.println(file.canWrite());
        System.out.println(file.isFile());
        System.out.println(file.isDirectory());
    }
}

感谢。以上是我的Java类。

3 个答案:

答案 0 :(得分:4)

您错误地认为Text.txt不是目录名。

mkdirs()创建一个目录(以及创建它所需的所有目录)。在您的情况下'Text.txt'

见这里:https://docs.oracle.com/javase/7/docs/api/java/io/File.html#mkdirs()

目录完全没有问题。在它。

您可以使用getParentFile()获取要创建的目录,并使用mkdirs()

答案 1 :(得分:1)

了解更多信息。以下是文件和目录的两个表示之间的差异:

final File file1 = new File("H:/Test/Text.txt"); // Creates NO File/Directory
file1.mkdirs(); // Creates directory named "Text.txt" and its parent directory "H:/Test" if it doesn't exist (may fail regarding to permissions on folders).

final File file = new File("H:/Test2/Text.txt"); // Creates NO File/Directory
try {
    file.createNewFile(); // Creates file named "Text.txt" (if doesn't exist) in the folder "H:/Test2". If parents don't exist, no file is created.
} catch (IOException e) {
        e.printStackTrace();
    } 

答案 2 :(得分:0)

替换您的代码:

else {
        file.mkdirs();
     }

使用:

else {
        if (!file.isFile()&&file.getParentFile().mkdirs()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }