这是我的班级,我做错了什么。为什么我的文本文档成为文件夹。请解释发生了什么以及如何纠正它。谢谢
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类。
答案 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();
}
}
}