У меня есть проблема, чтобы найти файл, который написан правильно. Я могу читать, но когда я хочу найти его в своем каталоге проекта, он не существует. Я пытался найти его во всех папках моего компьютера, но он не существует. Только когда я включаю apsolute path, я нахожу его в своем каталоге проекта.
final String FILE_NAME = "test.dat";
//READ FILE
File readFile = new File(FILE_NAME);
if (readFile.exists()) {
System.out.println("file exsists...");
FileInputStream f_in = new FileInputStream(readFile);
// Read object using ObjectInputStream
ObjectInputStream obj_in = new ObjectInputStream(f_in);
// Read an object
Object obj = null;
try {
obj = obj_in.readObject();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (obj instanceof JsonObjectLoad) {
jo = (JsonObjectLoad) obj;
}
obj_in.close();
}
else {
jo = new JsonObjectLoad();
}
jo.localities.add(loc);
//WRITE FILE
File writeFile = new File(FILE_NAME);
writeFile.createNewFile();
FileOutputStream f_out = new FileOutputStream(writeFile);
// Write object with ObjectOutputStream
ObjectOutputStream obj_out = new ObjectOutputStream(f_out);
// Write object out to disk
obj_out.writeObject(jo);
obj_out.close();
Я нашел путь в C:\eclipse_ee\eclipse\test.dat... Как его изменить?
Просто напечатайте абсолютный путь, чтобы проверить, где он существует? Создайте новый файл только в том случае, если он не выйдет, иначе он заменит существующий.
File writeFile = new File(FILE_NAME);
if(!writeFile.exists()){
writeFile.createNewFile();
}
System.out.println(writeFile.getAbsolutePath());
Примечание. Нет необходимости writeFile.createNewFile()
потому что FileOutputStream
автоматически создает новый файл, если он не существует там, где вы начинаете писать.
Если вы хотите открыть файл в режиме добавления, когда файл уже существует и не хотите заменять существующий контент, используйте конструктор FileOutputStream (File file, boolean append) и передайте true
качестве аргумента append.
Использовать путь по отношению к папке src
проекта: (попробуйте любой)
// file that exists under resources folder parallel to src in your project
File file1 = new File("resources/xyz.txt");
System.out.println(file1.getAbsolutePath());
// file that exists under src/resources folder
File file2 = new File(getClass().getResource("/resources/abc.txt").toURI());
System.out.println(file2.getAbsolutePath());
Вот структура проекта:
project root
|
|__src
| |
| |__resources
| |
| |__abc.txt
|
|__resources
|
|__xyz.txt