将新创建的 .csv 文件保存到特定目录位置/包 - Java

问题描述 投票:0回答:1

自动化测试,需要将 csv 保存到已经为下一步连接的特定位置。

if (bulkJobType.equalsIgnoreCase("IP_REMOVAL")) {
            ipFileName = "IP_REMOVAL" + dtf.format(dateTimeNow) + "ip.csv";
            FileWriter fw = new FileWriter(ipFileName);
            try (PrintWriter pw = new PrintWriter(new FileWriter(ipFileName))) {
                pw.write("IP_REMOVAL");
                pw.write(System.getProperty("line.separator"));
                pw.write a few other proprietary attributes
            }

我 100% 知道这是有效的,因为我有几个格式正确的未版本化文件,只是不在文件结构中的正确位置。

文件结构:

name
├── build
├── src
│   ├── test
│       └─java (csv creation happens in here btw)
│       └─resources
│          └─*FOLDER I WANT CSV TO SAVE IN *
│            └─IP_REMOVAL.CSV
├── *WHERE CSV IS ACTUALLY SAVING*`

我已经尝试了其他几个堆栈溢出线程,但无法使其正常工作。我觉得有点奇怪我不能只指定一个相对路径到我想保存新创建的 csv 的位置

感谢任何帮助

所有其他 SO 帖子。这个 FileWriter fw = new FileWriter(new File(dir, str));

看起来最有前途但没有运气

java intellij-idea filewriter printwriter
1个回答
1
投票

如果不指定本地文件系统的完整路径,则无法在运行时保存到资源文件夹

当你这样做的时候

ipFileName = "IP_REMOVAL" + dtf.format(dateTimeNow) + "ip.csv";

相当于

ipFileName = "<project_root>IP_REMOVAL" + dtf.format(dateTimeNow) + "ip.csv";

如果您确实尝试保存到资源文件夹,它将位于

target/classes/
而不是您正在考虑的源代码资源文件夹中。

如开头所述,您可以做的是提供资源文件的完整路径,如

src/main/resources/folder
。也不要忘记在写入之前创建目录和文件。

© www.soinside.com 2019 - 2024. All rights reserved.