我想在当前不存在的文件夹中写入一个新文件。
我这样使用它:
File file = new File("C:\\user\\Desktop\\dir1\\dir2\\filename.txt");
file.getParentFile().mkdirs();
FileWriter writer = new FileWriter(file);
我在名为filename.txt
的文件夹下得到文件dir1.dir2
。
我需要dir1/dir2
:
我该如何实现?
请不要将此问题标记为重复,因为重新研究后我没有得到所需的东西。
更新1
我正在使用Jasper Report和Spring Boot导出pdf文件。
我需要在目录名current year
下创建文件。在此文件夹下,我需要创建一个名为the current month
的目录,并且应该在该目录下导出pdf文件。示例:
(2018 / auguest / report.pdf)
我正在使用LocalDateTime
来获取year
和month
这是我的代码的一部分:
ReportFiller reportFiller = context.getBean(ReportFiller.class);
reportFiller.setReportFileName("quai.jrxml");
reportFiller.compileReport();
reportFiller = context.getBean(ReportFiller.class);
reportFiller.fillReport();
ReportExporter simpleExporter = context.getBean(ReportExporter.class);
simpleExporter.setJasperPrint(reportFiller.getJasperPrint());
LocalDateTime localDateTime = LocalDateTime.now();
String dirName = simpleExporter.getPathToSaveFile() + "/"+
localDateTime.getYear() + "/" + localDateTime.getMonth().name();
File dir = new File(dirName);
dir.mkdirs();
String fileName = dirName + "/quaiReport.pdf";
simpleExporter.exportToPdf(fileName, "");
这就是我得到的:
答案 0 :(得分:1)
尝试以下符合您期望的代码
File dir = new File("C:\\Users\\username\\Desktop\\dir1\\dir2");
dir.mkdirs();
File file = new File(dir, "filename.txt");
FileWriter newFile = new FileWriter(file);
您需要先创建文件夹结构,然后再创建文件
答案 1 :(得分:1)
首先,创建目录,然后创建一个要写入的新文件。
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
class TestDir {
public static void main(String[] args) {
String dirPath = "C:\\user\\Desktop\\dir1\\dir2\\";
String fileName = "filename.txt";
Path path = Paths.get(dirPath);
if(!Files.exists(path)) {
try {
Files.createDirectories(path);
} catch (IOException e) {
e.printStackTrace();
}
}
try (Writer writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(dirPath + fileName), "utf-8"))) {
writer.write("something");
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 2 :(得分:1)
您需要先创建目录,然后创建文件:
赞:
String dirName = "/" + localDateTime.getYear() + "/" + localDateTime.getMonth().name();
File file = new File(dirName);
file.mkdirs();
file = new File(file.getAbsolutePath()+"/quriReport.pdf");
file.createNewFile();
如果转到项目目录,则会看到2018/August/quriReport.pdf
但是如果只有IDE
,.
会显示one subfolder
的子文件夹。
答案 3 :(得分:0)
File file = new File("C:\\user\\Desktop\\dir1\\dir2\\filename.txt");
Files.createDirectories(file.getParentFile().toPath());
FileWriter writer = new FileWriter(file);
writer.write("jora");
writer.close();