1

如果我这样做

fis = new FileInputStream(new File(".").getAbsolutePath() + "/sudoinput.txt");

它试图写入服务器上的这个位置。我不确定这是否是一个可写的地方。

FILE NAME (fos)::::::::::::::::::/opt/tomcat/temp/./sudoinput.txt
FILE NAME (fis)::::::::::::::::::/opt/tomcat/temp/./sudoinput.txt

我想写信给 webapps/sudoku/WEB-INF/classes 这基本上是 C:\Users...\git\sudo-project\sudo\src\main\resources

在 Eclipse Windows 7 上,如果我给出这个错误 src\main\resources\sudoinput.txt (The system cannot find the path specified)

fis = new FileInputStream("src/main/resources/sudoinput.txt");

我也试过这个:

fis = new FileInputStream("src\\main\\resources\\sudoinput.txt");

但不起作用。

我应该如何创建一个能够写入 src/main/resources 的文件输入流?请注意,我正在使用 eclipse windows 进行开发,如果这改变了需要指定路径的方式,我会将 .war 文件上传到 unix 服务器。

4

4 回答 4

5

src/main/resources文件夹是应该包含应用程序资源的文件夹。如您所述,maven 将这些文件打包到文件的根目录,以便您可以在库中访问它们。

查看有关标准目录布局的 Maven 文档

在某些情况下,可以写入上下文,但尝试它不是一个好主意。根据您的 web 应用程序的部署方式,您可能无法写入目录。考虑部署 .war 档案时的情况。这意味着您尝试写入战争档案,这是不可能的。

一个更好的主意是使用临时文件。这样,无论您的 Web 应用程序的部署方式如何,您都可以确保这将起作用。

于 2013-07-09T18:42:27.313 回答
2

同意桑迪普·帕蒂尔的观点。如果您的资源中没有文件夹,则路径将是/sudoinput.txt或在文件夹中/folder_name/sudoinput.txt.为了从资源中获取文件,您应该使用YourClass.class.getResource("/filename.txt");

例如

Scanner scanner = new Scanner(TestStats.class.getResourceAsStream("/123.txt"));

或者

Scanner scanner = new Scanner(new `FileInputStream(TestStats.class.getResource("/123.txt").getPath()));`

还请看:这个

于 2013-07-10T06:36:59.120 回答
1

您可以保留在资源下创建的文件并调用 .class.getresource(your_file_name_or_path_separated_with_forward_slash);

看看它是否适合你。

于 2013-07-09T17:28:35.257 回答
0

如果您想创建文件,webapps/sudoku/WEB-INF/classes最终在创建的 WAR 文件中,这可以通过将您想要的文件放入src/main/resources/ 这意味着您需要创建文件夹src/main/resources并将您喜欢的文件放入该目录。

于 2013-07-10T06:08:58.680 回答