Есть ли проблема с BufferedWriter в JAVA? - PullRequest
0 голосов
/ 30 марта 2020

Я довольно новичок в OOP и Java программировании, поэтому, пожалуйста, прости меня . Я написал небольшой класс, в котором я пытаюсь записать строку в файл, используя класс BufferedReader . Все работает просто отлично, но файл "пустой" , я имею в виду, что внутри я ничего не вижу. Но, безусловно, данные сохраняются, потому что, когда я закрываю Eclipse, снова открываю его и запускаю класс драйвера для выполнения моих тестов, данные восстанавливаются из файла. Кстати, я использую механизм "try with ressources" , поэтому мой файл "закрывается" автоматически. Кто-то уже сталкивался с этой проблемой? Моя Eclipse версия "2018-12"

Ниже представлен небольшой класс с методом writeToFile, в котором я использую класс BufferedReader. .

package parlons.code.tipcalulator.utilities;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileManagement {
    private File tipFile;

    public FileManagement(String tipsFileName) {
        this.tipFile = new File("/"+tipsFileName);

    }
    public String readFromFile() {
        String tip = null;
        try(BufferedReader bufferedReader = new BufferedReader(new FileReader(this.tipFile))) {
            tip = bufferedReader.readLine();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return tip;

    }

    public void writeToFile(String decimal) {
        try(BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(tipFile,true))){
            bufferedWriter.write(decimal);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ниже вы найдете класс драйвера для тестирования.

package parlons.code.tipcalulator.utilities;

public class UtilitiesTestDriver {

    public static void main(String[] args) {

        String decimal = "108";
        FileManagement fileManagement = new FileManagement("tipFile.txt");
        fileManagement.writeToFile(decimal);
        System.out.println(fileManagement.readFromFile());


    }

}

1 Ответ

0 голосов
/ 30 марта 2020

Как указано выше в комментарии Макото, все работает нормально, если вы перейдете, например, на:

        this.tipFile = new File("./"+tipsFileName);

Это создаст файл tipFile.txt (содержащий 108) в каталоге root вашего проекта (как в отличие от root файловой системы - где вы, вероятно, не имеете разрешения на запись.)

...