powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Старый добрый относительный путь.
8 сообщений из 8, страница 1 из 1
Старый добрый относительный путь.
    #38394766
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не спрашивайте про название класса loadPerDay. (потом изменю)
Код: java
1.
      try ( FileInputStream fileInputStream = new FileInputStream("C:\\Users\\student\\"+sfilename+".xlsx"))


Есть желание брать этот файл из папки res/
Код: java
1.
path="res\\"+sfilename+".xlsx"


Пытался через MyClass.class.getClassLoader().getResourseAsStream(path) , тщетно. Как правильно написать путь?

И еще один вопрос.
После того как сделаю .jar архив. Как указать путь так, чтобы считывать файл, лежащий в одной и той же директории с архивом.
...
Рейтинг: 0 / 0
Старый добрый относительный путь.
    #38394791
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TRY
Код: java
1.
2.
3.
4.
5.
6.
        String path = "res/"+sfilename+".xlsx";
        System.out.println(getClass().getClassLoader().getResource(path).toString());

        File file2 = new File(getClass().getClassLoader().getResource(path).toString());

        try ( FileInputStream fileInputStream = new FileInputStream(file2))


result
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
file:/C:/Users/student/IdeaProjects/batch/out/production/batch/res/ExportBatch.xlsx
Work is finished!
java.io.FileNotFoundException: file:\C:\Users\student3\IdeaProjects\batch\out\production\batch\res\ExportBatch.xlsx (Синтаксическая ошибка в имени файла, имени папки или метке тома)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at workhere.WriterXlsx.<init>(WriterXlsx.java:20)
	at workhere.Start.start(Start.java:62)
	at workhere.Start.main(Start.java:24)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

...
Рейтинг: 0 / 0
Старый добрый относительный путь.
    #38394801
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причем файл действительно там лежит, но java.io.FileNotFoundException
...
Рейтинг: 0 / 0
Старый добрый относительный путь.
    #38394905
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы читать умеете:Синтаксическая ошибка в имени файла, имени папки или метке тома. Если делать то так
Код: java
1.
2.
3.
4.
5.
6.
        String path = "res/"+sfilename+".xlsx";
        System.out.println(getClass().getClassLoader().getResource(path).toString());

        File file2 = new File(getClass().getClassLoader().getResource(path).toURI());

        try ( FileInputStream fileInputStream = new FileInputStream(file2))


или тогда сразу
MyClass.class.getClassLoader().getResourseAsStream("res/"+sfilename+".xlsx")
...
Рейтинг: 0 / 0
Старый добрый относительный путь.
    #38394971
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ немного другой, но пусть по вашему умному мнению он останется для вас таким.
Второй вопрос все еще в силе.
авторПосле того как сделаю .jar архив. Как указать путь так, чтобы записать файл в ту же директорию, где лежит архив.
Если запускать через IDEA, то файл создается, если через .jar - нет. Мало того, нужно еще чтобы файл создавался не по абсолютному пути, а по относительному относительно место расположения архива(в данном случае в той же директории)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class WriterXlsx {
    public WriterXlsx(String sfilename, List<RecordNameCode> records, List<Day> recordsDay, Integer fullTime) {
        String path = "res/" + sfilename + ".xlsx";
        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(path))
        {
            int lastUsedColumn = createListHead().size();
            XSSFWorkbook workBook = new XSSFWorkbook(inputStream);
            XSSFSheet sheet = workBook.getSheetAt(0);

        //    cleaner(90,"",sheet);
            drawRecordHead(createListHead(),sheet);
            writeContent(2, records,sheet);
            createPlanForDay(recordsDay,fullTime,lastUsedColumn,sheet,workBook);

            try(FileOutputStream out = new FileOutputStream("C:\\Users\\student3\\"+sfilename+".xlsx"); ) {
            workBook.write(out);
            out.close();         }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
...
Рейтинг: 0 / 0
Старый добрый относительный путь.
    #38395057
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять проблемы с директориями .... у меня уже была такая проблема с другим проектом
то есть опять получается, что среда разработки имеет право читать с файла, а jar архив, такого доступа не имеет.
Какой класс использовать чтобы обращаться к внутренностям архива?
И FileOutputStream по идее подойдет для создания записи во внешний файл?
...
Рейтинг: 0 / 0
Старый добрый относительный путь.
    #38395078
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://stackoverflow.com/questions/13269556/strange-behavior-of-class-getresource-and-classloader-getresource-in-executa

Реально какой-то бред. Есть такие же функции (getResource, getResourceAsStream) и без ClassLoader.
В итоге есть 4 функции и если не знаешь какой пользоваться - можно попасть в лужу. (ссылка сверху доказывает, что при одинаковых значениях некоторые функции выдают Null).
Я не знаю какую из них брать((
...
Рейтинг: 0 / 0
Старый добрый относительный путь.
    #38395079
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
методы*
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Старый добрый относительный путь.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]