自动化测试,需要将 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));
看起来最有前途但没有运气
如果不指定本地文件系统的完整路径,则无法在运行时保存到资源文件夹。
当你这样做的时候
ipFileName = "IP_REMOVAL" + dtf.format(dateTimeNow) + "ip.csv";
相当于
ipFileName = "<project_root>IP_REMOVAL" + dtf.format(dateTimeNow) + "ip.csv";
如果您确实尝试保存到资源文件夹,它将位于
target/classes/
而不是您正在考虑的源代码资源文件夹中。
如开头所述,您可以做的是提供资源文件的完整路径,如
src/main/resources/folder
。也不要忘记在写入之前创建目录和文件。