这可能是一个愚蠢的问题,但我不得不问,因为我找不到合适的解决方案。
我是Eclipse新手。我在Eclipse中创建了一个Dynamic Web项目,在这里,我编写了一个简单的代码来创建一个文本文件,只指定文件名不是创建的路径,成功执行后,我在项目中找不到我的文本文件文件夹中。
如果在代码中指定了路径,我可以在指定的目录中找到文本文件,如果我没有指定路径,我的问题是我可以找到我的文本文件的地方吗?
我的代码是
try {
FileWriter outFile = new FileWriter("user_details.txt", true);
PrintWriter out1 = new PrintWriter(outFile);
out1.append(request.getParameter("un"));
out1.println();
out1.append(request.getParameter("pw"));
out1.close();
outFile.close();
System.out.println("file created");
} catch(Exception e) {
System.out.println("error in writing a file"+e);
}
我用以下几行编辑了我的代码,
String path = new File("user_details.txt").getAbsolutePath();
System.out.println(path);
我得到的路径在
之下 D:\Android\eclipse_JE\eclipse\user_details.txt
为什么我在eclipse文件夹中找到它?
然后, 如果这不是创建文本文件的正确方法,我如何在我的Web应用程序中创建文本文件?
答案 0 :(得分:1)
该文件位于应用程序服务器的实际工作目录中。做一个
System.out.println(new File("").getAbsolutPath());
您将找到该位置。
然而,在这样的Web应用程序中编写文件并不是一个好主意,因为首先你永远不知道它在哪里,然后你永远不知道你是否在它上面写了特权。
您需要为应用程序指定一些 filesystem root ,方法是将其作为init-parameter
传递,并将其用作您在文件系统上需要执行的操作的父级。将this answer检查为类似的Question。
然后您可以像这样创建文件:
String fsroot = getServletContext().getInitParameter("fsroot")
File ud = new File(fsroot, "user_details.txt");
FileWriter outFile = new FileWriter(ud, true);
答案 1 :(得分:0)
您可以尝试使用getAbsolutePath()方法。
String newFile = new File("Demo.txt").getAbsolutePath();
它将显示文件的创建位置。