【问题标题】:Correct file path within Spring applicationSpring 应用程序中的正确文件路径
【发布时间】:2017-03-30 06:40:57
【问题描述】:

这听起来很奇怪,但最近几个小时我试图在我的 java 类的 Spring 应用程序的 web 应用程序文件夹中编写一个 json 文件。我附上了快照,可能会清除对它的理解。 click to Refer the file system snap here..."jsonfiles" is the folder i am writing files marked with red circle. 请为 java 类中的 json 文件建议正确的文件路径。提前致谢。并且还建议这样做是一个好习惯吗?我是这种情况的新手。

正在写入文件的 Java 代码:

FileWriter file = new FileWriter("../src/main/webaccess/jsonfiles/jsonfile.json")){
file.write(json.toString());
}

【问题讨论】:

  • 相关代码必须在问题本身中。但无论如何,这个问题没有什么意义:当部署在某处的服务器上时,你所拥有的只是一个战争或 jar 文件。该服务器不会是您的开发人员工作站,也不会有任何 src 目录,也不会有任何 webapp 目录。确定要写入文件的目录。或者将您的数据保存在数据库中。
  • 谢谢 JB。我在运行时需要这些文件来填充图表..所以你能建议我在哪里(从工作空间视图的哪个位置)我可以编写 json 文件,以便在从 html 端加载相应页面时访问它们。所以基本上就像我正在从 java 类中编写 json 文件,然后使用这些文件来填充我的网页图表,所以我需要一个可以编写文件的公共位置,然后可以从 web 应用程序部件访问它们。我也需要数据作为 json 文件,所以不去 DB 选项。请提出建议。提前致谢。

标签: java json spring filepath


【解决方案1】:

不,在 webapp 文件夹中放置输出(在您的情况下为 JSON)文件不是正确的路径。

原因:在部署期间,您将失去此更改,因为将提取 war 文件,并且您的 webapp 文件夹将被覆盖。

正确方法:写入 tomcat 目录之外的文件系统。一般的做法是定义一个环境变量指向您的应用程序具有写入权限的外部目录,并将您的所有内容写入那里。类似于写日志文件。

【讨论】:

  • 谢谢Vinod。我在运行时需要这些文件来填充图表..所以你能建议我在哪里(从工作空间视图的哪个位置)我可以写json文件以便当时可以访问它们从 html 端加载各个页面。
  • @prashant 再次,在您部署应用程序的服务器上不会有任何“工作区”。将有一个文件系统和一个执行您的war文件的tomcat服务器。将它们放在文件系统上您想要的任何位置,在tomcat 目录之外。使用 servlet 从此目录中读取它们,并在前端请求它们时将它们发送到浏览器。
  • 我认为一个例子会有所帮助。例如,您可以写入 /tmp 或 /var/log 或 linux 操作系统中的任何自定义目录。如果是 windows,则 C:/Desktop 等
【解决方案2】:

维诺德是正确的。当我尝试使用 Spring 配置 Kafka Producer 时,我遇到了类似的问题。将您的临时文件放在操作系统/容器的实际文件系统中的任何文件夹中,例如 /tmp/myApp 。这个“/tmp/myApp”目录必须有写权限。当您在其中读/写文件时,您必须使用该目录的绝对路径。

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多