如何在java中使用相对路径创建图像文件?

时间:2011-02-12 11:02:43

标签: java file-io

我正在使用eclipse galelio来开发一个Web应用程序。我需要从用户本地目录中读取一个文件并将其放在我的应用程序中的某个位置,以便用户可以根据需要在ater点查看它。

为此我正在这样做:

f=new File("images/myfile.txt");
          if(!f.exists()){
          f.createNewFile();         
          }

但是这个文件是在C:\Documents and Settings\MB\images\myfile.txt中创建的,而不是在应用程序中(我想要的地方)。

如何在应用程序中获取此信息?

2 个答案:

答案 0 :(得分:0)

将用户创建的内容存储在Web应用程序中是一个坏习惯。通常,Web应用程序被部署为战争,并且提取战争(如果它发生)取决于容器。您不想写入容器“拥有”的目录。

通常,您在文件系统(或数据库)中为放置用户创建的内容指定一个位置。

您可以使用上下文配置这样的位置(在Tomcat context.xml中),您可以在servlet中检索该属性(getServletContext),并在您的应用程序中使用该配置。

这也可以让系统管理员将数据放在经常备份的地方。

即使您没有这样的组织,配置文件系统位置的习惯也不错。

答案 1 :(得分:0)

相对文件路径的基目录是当前目录。对于独立Java应用程序,这是您从中启动Java的目录(如果您没有提供-Duser.dir=...选项)。我认为,你的Web-App-Container中的内容是完全未指定的。

是否要将文件保存在服务器或客户端上?

  • 如果是客户端,则必须使用applet或Webstart应用程序,然后可能会使用FileChooser让用户确定目录,或者更好地使用javax.jnlp api (FileOpenService,FileSaveService或PersistenceService)。
  • 如果 server ,那么您将使用容器的机制来获取正确的路径(或直接存储/检索数据)。 (我不知道有关于此的任何细节,抱歉。)