Java创建目录和子目录(如果不存在)
假设我想创建Java创建目录和子目录(如果不存在),java,Java,假设我想创建generatedAnswers目录,其中包含另一个目录dirName,它是我输入的字符串变量 然后我想在目录`generatedAnswers/dirName'中插入fileName,使文件按照以下结构落入dirName目录: / generatedAnswers /dirName fileName.txt 我尝试了以下代码,但不起作用: File file = new File("generatedQuestions/"+dirName+&q
generatedAnswers
目录,其中包含另一个目录dirName
,它是我输入的字符串变量
然后我想在目录`generatedAnswers/dirName'中插入fileName
,使文件按照以下结构落入dirName目录:
/ generatedAnswers
/dirName
fileName.txt
我尝试了以下代码,但不起作用:
File file = new File("generatedQuestions/"+dirName+"/");
file.getParentFile().mkdirs();
PrintWriter writer = new PrintWriter(file+fileName+".txt");
我得到的结果是:
/生成答案
dirNamefineName.txt(此文件已转换为文件名)
我做错了什么?试着这样做:
String dirName = "someDirectory";
String fileName = "file.txt";
File file = new File("generatedQuestions/" + dirName + "/" + fileName);
if(file.getParentFile().mkdirs()) {
PrintWriter printWriter = new PrintWriter(file);
}
我认为您可以使用以下代码:
File file = new File("generatedQuestions/"+dirName+"/");
file.getParentFile().mkdirs();
PrintWriter writer = new PrintWriter(file.getAbsolutePath() +fileName+".txt");
我添加了file.getAbsolutePath(),因为您尝试获取文件路径时出错的是代码的这一行:
file.getParentFile().mkdirs();
file
路径是generatedQuestions/dirName
,因此file.getParentFile()
返回generatedQuestions
,然后调用mkdirs()
,因此只创建目录generatedQuestions
,而不是子目录dirName
。删除getParentFile()
,即仅
file.mkdirs()
请注意,mkdirs()
可能会失败,在这种情况下它将返回false。您应该检查返回值,而不是假设它总是成功的
最后,PrintWriter
构造函数的参数也是错误的。类java.io.File
的toString()
方法不打印尾随分隔符,因此需要添加该字符,即
PrintWriter writer=新的PrintWriter(file+file.separator+fileName+“.txt”);
下面的代码适用于我
String dirName=“dirName”;
File File=新文件(“generatedQuestions”+File.separator+dirName);
if(file.mkdirs()){
字符串fileName=“fileName”;
try(PrintWriter=newprintwriter(file+file.separator+fileName+“.txt”)){
}
捕获(FileNotFoundException x){
x、 printStackTrace();
}
}
否则{
System.out.println(“'mkdirs()'失败”);
}
或者,您可以像这样使用接口和类的组合
Path Path=Path.get(“generatedQuestions”,dirName);
试一试{
创建目录(路径);
path=path.resolve(文件名+“.txt”);
PrintWriter=新的PrintWriter(path.toFile());
}
捕获(IOX异常){
x、 printStackTrace();
}