【问题标题】:FileOutputStream or any creation file using java file is default creating in relative path of Eclipse home folder [duplicate]FileOutputStream 或任何使用 java 文件的创建文件默认在 Eclipse 主文件夹的相对路径中创建 [重复]
【发布时间】:2019-02-14 17:07:10
【问题描述】:

图片:https://i.stack.imgur.com/nB9Ys.jpg

当我使用文件创建代码时,.file 是在 eclipse 主文件夹中创建的,而不是在我的项目中

FileOutputStream fos = new FileOutputStream("filename.txt"); 
OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
Writer writer = new BufferedWriter(osw);
writer.write("something");
System.out.println("new file created ");[enter image description here][1]

我需要更改 eclipse conf 文件中的任何内容吗? 读取任何文件真的让我很麻烦。我无法在任何项目中使用相对路径

【问题讨论】:

  • “不在我的项目中” 一个应用程序。在任何情况下都不应该尝试在自己的“项目”中写入文件。一旦应用程序,该路径将不起作用。已部署。而是将文件存储在user.home 的可重现、可访问的子目录中。

标签: java fileinputstream fileoutputstream


【解决方案1】:

有一些环境变量决定了你的相对路径的根在哪里。找出哪一个很容易,但我认为您的解决方案不应该依赖于此。解决您的问题的最简单方法是使用绝对路径(类似于 "C:/myfolder/filename.txt" 而不是 "filename.txt"。但如果您想要更灵活,您可以将属性添加到属性文件(或以任何其他方式选择添加一个属性)在该属性中存储您的根路径。然后,当您要创建读取或写入文件时,使用该属性构建您的路径:

@Value("${root.path}")
public String ROOT_PATH;
...
FileOutputStream fos = new FileOutputStream(ROOT_PATH + "filename.txt");
...

【讨论】:

  • 谢谢@michael ..你能告诉我如何找到“你的相对路径的根在哪里”吗?并且需要在我的文件夹中创建文件,因为如果我解决了这个问题,它可能会解决我的相对路径问题?
  • 它很可能是环境变量“user.dir”,但我强烈建议您不要更改该变量的值,因为它可能会影响您的整个操作系统,而且效果不佳。通过硬编码或通过属性设置您自己的根路径并使用它 - 使用您指定的根和相对路径构建完整路径 - 就像我在答案中写的那样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 2015-12-17
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 2013-04-29
相关资源
最近更新 更多