Как создать файл в 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 и поместите файлы, которые вам нравятся, в этот каталог.

Другие вопросы по тегам