Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2013, 19:16   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию Куда положить текстовый файл?

Дорогие форумчане, объясните мне, пожалуйста, куда необходимо положить текстовый файл с данными так, чтобы не указывать длинный абсолютный путь, а чтобы он увидел сразу "input.txt" и стал читать. Я положила этот файл в папку с проектом и фиг он его увидел.
И скажите, воспринимает ли Java пути со всякими @ (как параметр)?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 08.02.2013, 21:58   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Значится отвечу сначала на второй вопрос. Нет. Не воспринимает. Для этого есть String.format("/path/to/%s.txt", "myfile"). Ну и подставляешь его в путь. Можно собрать StringBuilder'ом, можно просто конкатенацией строк.

По поводу первого: если нужен относительный путь, значит нужна точка отсчёта в проекте. Для таковой используется директория класслоадера проекта. Помещаешь файл в папку с исходниками. Если тебе нужен стрим (как правило он и нужен), то пишешь так:
Код:
ClassLoader.getSystemResourceAsStream("file")
Работает и из иде, и из архива (файл внутри архива). Но если код написать так:
Код:
new FileInputStream(new File(ClassLoader.getSystemResource("file").getPath()))
будет исключение, что файл не найден. Потому что класс File, если ему передать в конструкторе относительный путь, будет считать относительно текущей директории.
Carbon вне форума Ответить с цитированием
Старый 09.02.2013, 00:04   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ах, как жаль, что все так загадочно((( Я еще никогда не сталкивалась с ClassLoader. Вот интересно, почему когда смотришь примерчики, все успешно орудуют Scanner-ом, типа
Код:
 private static void readFile(String fileName) {
       try {
         File file = new File(fileName);
         Scanner scanner = new Scanner(file);
         while (scanner.hasNext()) {
           System.out.println(scanner.next());
         }
         scanner.close();
Но никто не упоминает о том, что как правильно положить файл, чтобы не забивать себе голову (пока!) сборкой пути. И не о каком ClassLoader-е никто не говорит((

Буду действовать методом от противного - интересно, если я закажу создание файла, куда в директории Ява его положет?

Спасибо Вам огромное, хоть Вы просветили))))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 09.02.2013, 01:32   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Ну про класслоадеры мало в каких книжках пишут. А когда им надо работать с файлами, они не хранят их в структуре проекта, как ты, а юзают абсолютные пути, либо вычисляют текущую рабочую директорию:
Код:
new File(".")
или
Код:
System.getProperty("user.dir")
и от неё пляшут.
А всё дело в том, что ресурсы обычно не кладутся в сами проекты. Либо какие-то данные пишут в манифест, либо кладутся, но проект этот уже энтерпрайс со своими класслоадерами и там уже не надо голову ломать, как подгружать ресурсы, и архив обычно не .jar, а уже .war или .ear
Carbon вне форума Ответить с цитированием
Старый 09.02.2013, 02:20   #5
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Спасибо за разъяснение!))
И все-таки я этот текстовый файл заломала - увидела, где новый создается, туда же в проект положила необходимый файл данными, и аккуратненько сканнером его в ArrayList считала. Долго, конечно, канителилась - примеры все были неудачные, но тем не менее результат достигнут))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
4. Дан текстовый файл. Создать символьный файл trum Помощь студентам 0 03.06.2012 19:20
Создать текстовый файл, строки которого содержат целые числа. Обработать файл следующим образом: напечатать все отрицательные... Anton94.by Паскаль, Turbo Pascal, PascalABC.NET 2 08.02.2012 19:23
Уважаемые программисты! Как положить скины Alpha в Res файл? xitroi Общие вопросы Delphi 4 13.05.2010 22:05
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55