У меня был похожий опыт.
Мое требование: у меня есть файл с именем "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