Java, чтение файла из текущего каталога?
Я хочу java-программу, которая читает указанное Пользователем имя файла из текущего каталога (тот же каталог, где .запускается файл класса).
другими словами, если пользователь указывает имя файла "myFile.txt", и этот файл уже находится в текущем каталоге:
reader = new BufferedReader(new FileReader("myFile.txt"));
не работает. Зачем?
Я запускаю его в windows.
7 ответов:
текущий каталог не является (обязательно) каталогом the .файл класса. Это рабочий каталог процесса. (ie: каталог, в котором вы были, когда вы запустили JVM)
вы можете загружать файлы из одной директории* как .файл класса с getResourceAsStream (). Это даст вам входной поток, который вы можете преобразовать в читатель с InputStreamReader.
*обратите внимание, что этот "каталог" на самом деле может быть файлом jar, в зависимости от того, откуда был загружен класс.
ни один из приведенных выше ответов не работает для меня. Вот что работает для меня.
допустим, ваш класс называется Foo.java, чтобы получить доступ к myFile.txt в той же папке, что и Foo.Java, используйте этот код:
URL path = Foo.class.getResource("myFile.txt"); File f = new File(path.getFile()); reader = new BufferedReader(new FileReader(f));
файлы в вашем проекте доступны для вас относительно вашей папки src. если вы знаете, какой пакет или папка myfile.txt будет в, скажем, это в
----src --------package1 ------------myfile.txt ------------Prog.java
вы можете указать его путь как " src / package1 / myfile.txt " от Prog.java
Если вы знаете, что ваш файл будет жить там, где ваши классы, что каталог будет на вашем classpath. В таком случае, вы можете быть уверены, что это решение решит вашу проблему:
URL path = ClassLoader.getSystemResource("myFile.txt"); if(path==null) { //The file was not found, insert error handling here } File f = new File(path.toURI()); reader = new BufferedReader(new FileReader(f));