Пакеты+подпакеты+открытие файла

 
 
 
Сообщения:81
подскажите мне пожалуйста!
Есть проект который храниться в пакете вида com.project.new.file. В программе я пытаюсь открыть файл
loadFile(args[0]);

вот собственно сам loadFile
public String loadFile(String f) throws IOException{
        System.out.println("Файл для разборки: " + f);
       
        File inf = new File(f);
        BufferedReader in = new BufferedReader(new FileReader(inf));
        StringBuffer sb = new StringBuffer(inf.length() > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int)inf.length());
        
        for( String s = in.readLine(); s != null; s = in.readLine()){
            sb.append(s).append("");
            pr.println(s);
        }
        return sb.toString();
    
     }

Так вот, на этапе компиляции все нормально, при запуске выдает исключение
java.io.FileNotFoundException: input.txt (Не удается найти указанный файл)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileReader.<init>(FileReader.java:55)
        at Fon.loadFile(Fon.java:58)
        at Maker.main(Maker.java:39)
Exception in thread "main" 
Java Result: 1

подскажите куда мне положить этот input.txt!
 
 
Сообщения:2030
Туда же, где находится класс Maker

Всякое решение плодит новые проблемы
 
 
Сообщения:81
да вот в том то и загвоздка.... что он лежит и в корне проекта и в папке с классом... куда я его только не ложил... Я использую NetBeans, может он че чудит с пакетами?
 
 
Сообщения:3874
Для доступа к ресурсам внутри пакетов нужно использовать getResourceAsStream. Пример: http://pda.javatalks.ru/sutra4424.php#4424
 
 
Сообщения:81
а если ресурс находится вне пакета? тот же текстовый файл который я буду передавать как параметр?
 
 
Сообщения:2030
Попробуйте передать полный путь на файл, а не только его имя.

Всякое решение плодит новые проблемы
 
 
Сообщения:81
попробовал, получилось. могу указать "c:\\input.txt", только от этого не легче... нужно передавать главному классу 2 параметра input и output.... не могу же я каждый раз указывать длинный путь к файлам? должен же быть какой то выход!
 
 
Сообщения:2030
Почему нет? Сделайте у себя в классе static final String переменную, которая бы означала путь до файлов. И передавайте имя файла как
public static final String PATH_TO_FILE = "C:/very long/path/to/files/";
...
workingWithFile(PATH_TO_FILE + fileName)

Всякое решение плодит новые проблемы
 
 
Сообщения:81
ага, спасибо! смысл понял. и еще вопросик, как бы эту переменную PATH_TO_FILE не задавать ручками, а получить програмно? т.е. как получить каталог из которого запускается проект?
 
 
Сообщения:3874
File file = new File("test.txt"); // поиск файла будет происходить в текущем каталоге (т.е. в каталоге, откуда была запущена программа)

File file = new File(".//test//test.txt") // поиск файла будет происходить в каталоге test относительно текущего каталога.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет