Как создать файл в src/main/resources
Если я сделаю это
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/ классы, которые в основном C:\Users...\git\sudo-project\sudo\src\main\resources
В 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, если это изменит способ указания путей.
4 ответа
src/main/resources
папка - это папка, которая должна содержать ресурсы для вашего приложения. Как вы заметили, maven упаковывает эти файлы в корень вашего файла, чтобы вы могли получить к ним доступ в своей библиотеке.
Ознакомьтесь с документацией Maven о стандартной компоновке каталогов.
В некоторых случаях возможно написать в контекст, но это не очень хорошая идея попробовать. В зависимости от того, как развернуто ваше веб-приложение, вы можете не иметь возможности записи в каталог. Рассмотрим случай развертывания архива.war. Это будет означать, что вы попытаетесь записать в военный архив, а это будет невозможно.
Лучше было бы использовать временный файл. Таким образом, вы можете быть уверены, что это будет работать, независимо от того, как развернуто ваше веб-приложение.
Согласен с Сандипом Патилом. Если у вас нет папки внутри ваших ресурсов, путь будет /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()));`
Также посмотрите на это
Вы можете сохранить файл, созданный в ресурсах, и вызвать.class.getresource(your_file_name_or_path_separated_with_forward_slash);
Посмотрите, работает ли это для вас.
Если вам нравится создавать файлы в webapps/sudoku/WEB-INF/classes
который находится в конце в созданном файле WAR, чего можно достичь, поместив нужные файлы в src/main/resources/
Это значит, другими словами, вам нужно создать папку src/main/resources
и поместите файлы, которые вам нравятся, в этот каталог.