int imgID = generateImgId();

try
{
    File file = new File(getFilesDir(),CurrentPaint.listOfDoneImagesFile);
    FileOutputStream fOut  = openFileOutput(CurrentPaint.listOfDoneImagesFile,MODE_APPEND);
    OutputStreamWriter osw = new OutputStreamWriter(fOut );
    BufferedWriter bw = new BufferedWriter(osw);

    bw.append((imgID+"\n") );
    bw.flush();
    bw.close();
    osw.flush();
    osw.close();
    Out.flush();
    Out.close();
}catch(Exception e){
    System.out.println("writing to empty file: "+e.toString());e.printStackTrace(); }

mam taki kod, któy generuje błąd: IOexception stream closed

pod tym linkiem pisze że nie należy zamykać pliku po skończonej robocie, bo nie da się go otworzyć ponownie
https://coderanch.com/t/623579/java/java-io-IOException-Stream-closed

to w takim razie zawsze zostawiać wszystkie fileoutputstreamy, outputstreamwritey bufferedWritery, i analogicznie dla czytania z pliku otwarte? i dopiero przy wyłączaniu apki je zamykać, dobrze rozumiem?

funkcji czytających z pliku i zapisujących do niego mam kilka, we wszystkich usunąłem zamykanie ich, i errory znikły, ale czy to poprawny sposób na pozbycie się błędu