Чтение .txt файла из другого каталога - PullRequest
1 голос
/ 02 марта 2011

Код, который я запускаю, находится в /Test1/Example.Если мне нужно прочитать файл .txt в /Test1, как мне заставить Java вернуться на 1 уровень в дереве каталогов, а затем прочитать мой файл .txt

Я искал / гуглил и не былсмог найти способ чтения файлов в другом месте.

Я запускаю сценарий Java в файле .htm, расположенном по адресу /Test1/Test2/testing.htm.Где написано сценарий src=" ".Что бы я вставил в цитаты, чтобы прочитать его из моего файла, расположенного по адресу /Test1/example.txt.

Ответы [ 5 ]

2 голосов
/ 02 марта 2011

В Java вы можете использовать getParentFile () для обхода дерева.Итак, вы запустили свою программу в каталоге / Test1 / Example.И вы хотите написать свой новый файл как /Test1/Example.txt

    File currentDir = new File(".");
    File parentDir = currentDir.getParentFile();
    File newFile = new File(parentDir,"Example.txt");;

Очевидно, что есть несколько способов сделать это.

1 голос
/ 03 января 2014

У меня был похожий опыт. Мое требование: у меня есть файл с именем "sample.json" в каталоге "input", у меня есть файл java с именем "JsonRead.java" в каталоге "testcase". Итак, вся структура папок будет выглядеть как без названия / splunkAutomation / src, и при этом у меня есть входные папки, testcase.

один раз после компиляции вашей программы вы можете увидеть входной файл с именем "sample.json" в папке с именем "out / production / yourparentfolderabovesrc / input" и файл класса с именем "JsonRead.class" в папке с именем " выход / производство / yourparentfolderabovesrc / TestCase». Таким образом, во время выполнения Java фактически ссылается на эти файлы, а НЕ на наш фактический файл .java в разделе "src".

Итак, мой JsonRead.java выглядел так,

package testcase;
import java.io.*;
import org.json.simple.JSONObject;

public class JsonRead{
public static void main(String[] args){
java.net.URL fileURL=JsonRead.class.getClass().getResource("/input/sample.json");
System.out.println("fileURL: "+fileURL);
File f = new File(fileURL.toURI());
System.out.println("fileIs: "+f);
}
}

Это даст вам вывод, как, fileURL: file: / C: /Users/asanthal/untitled/out/production/splunkAutomation/input/sample.json fileIs: C: \ Users \ asanthal \ без названия \ out \ production \ splunkAutomation \ input \ sample.json

1 голос
/ 02 марта 2011

Когда вы создаете объект File в Java, вы можете указать ему путь.Вы можете использовать абсолютный или относительный путь.Для использования абсолютов для выполнения того, что вы хотите, потребуется:

File file = new File("/Test1/myFile.txt");
if(file.canRead())
{
    // read file here
}

Использование путей родственников, если вы хотите запустить из местоположения / Test1 / Пример:

File file = new File("../myFile.txt");
if(file.canRead())
{
    // read file here
}
1 голос
/ 02 марта 2011

У вас должна быть возможность использовать ссылку на родительский каталог "../"

. Возможно, вам потребуется выполнить проверку в ОС, чтобы определить, какое разделение каталогов вы должны использовать ['\' по сравнению с '"/ ']

0 голосов
/ 26 апреля 2013

Это сработало для меня. Я сохранял все свои классы в папке, но мне нужно было прочитать входной файл из родительского каталога моей папки классов. Это сделало работу.

String FileName = "Example.txt";

File parentDir = new File(".."); // New file (parent file ..)   
File newFile = new File(parentDir,fileName); //open the file
...