如果我这样做
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 /数独/ WEB-INF / classes目录 这基本上是 C:\用户... \ GIT中\须藤项目\须藤\ SRC \主\资源
在Eclipse Windows 7上我得到了这个 错误 src \ main \ resources \ sudoinput.txt(系统找不到指定的路径) 如果我给
fis = new FileInputStream("src/main/resources/sudoinput.txt");
我也试过这个:
fis = new FileInputStream("src\\main\\resources\\sudoinput.txt");
但不起作用。
我应该如何创建一个fileinputstream才能写入src / main / resources? 请注意,我正在使用eclipse窗口来执行dev,并将.war文件上传到unix服务器,如果这改变了路径需要指定的方式。
答案 0 :(得分:4)
src/main/resources
文件夹是一个应该包含应用程序的资源的文件夹。如您所述,maven将这些文件打包到文件的根目录,以便您可以在库中访问它们。
查看Maven documentation about the standard directory layout。
在某些情况下,可以写入上下文但尝试它不是一个好主意。根据您的webapp的部署方式,您可能不能够写入目录。考虑部署.war存档时的情况。这意味着你试图写入war档案,这是不可能的。
更好的想法是使用临时文件。通过这种方式,无论Web应用程序的部署方式如何,您都可以确定这将起作用。
答案 1 :(得分:2)
同意Sandiip Patil。如果您的资源中没有文件夹,则路径为/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()));`
另请参阅:this
答案 2 :(得分:1)
您可以保留在资源下创建的文件并调用.class.getresource(your_file_name_or_path_separated_with_forward_slash);
看看它是否适合你。
答案 3 :(得分:0)
如果您想在webapps/sudoku/WEB-INF/classes
中创建最终在创建的WAR文件中的文件,可以通过将所需文件放入src/main/resources/
来实现
换言之,您需要创建文件夹src/main/resources
并将您喜欢的文件放入此目录。