Записать число в файл и считать его обратно

Ни как не могу выполнить простую операцию. Есть текстовый файл с числом integer, я пытаюсь это число считать, обработать и вернуть его обратно в этот же файл. Но почему то не получается. Подскажите пожалуйста, где моя ошибка?

text до выполнения:


    123456
    package org.example;

import java.io.*;
import java.nio.CharBuffer;

public class Main {

    static int number = 0;
    static int numbernext = 0;
    Integer send = 0;

    public static void main(String[] args) throws IOException {

        BufferedWriter writer = new BufferedWriter(new FileWriter("src/text.txt"));
        writer.write(number);
        writer.close();
        System.out.println(number);

        System.out.println("--------------------");

        BufferedReader reader = new BufferedReader(new FileReader("src/text.txt"));
        reader.read(CharBuffer.allocate(numbernext));
        reader.close();

        System.out.println(numbernext);

    }


}

text file после выполнения:

TextTest

консоль:

ConsolTest


Ответы (1 шт):

Автор решения: Михаил Ребров

При записи литерал, лучше явго привести к строке

writer.write(Integer.toString(number));

В противном случае Writer сочтёт, что Вы передали ему char и запишет в файл соответствующий данному числу симвлол. Например, если число будет 123, то он запишет в файл символ "{"

Считывать легче построчно

reader.readLine()

А потом строку распарсить или другим способом привести к целочисленному виду

numbernext = Integer.parseInt(reader.readLine());

В итоге:

import java.io.*;

public class Main {
    static int number = 123123;
    static int numbernext = 0;
    Integer send = 0;
    public static void main(String[] args) throws IOException {
        BufferedWriter writer = new BufferedWriter(new FileWriter("src/text.txt"));
        writer.write(Integer.toString(number));
        writer.close();
        System.out.println(number);

        System.out.println("--------------------");

        BufferedReader reader = new BufferedReader(new FileReader("src/text.txt"));
        numbernext = Integer.parseInt(reader.readLine());
        reader.close();
        System.out.println(numbernext);
    }
}

output:

123123
--------------------
123123

введите сюда описание изображения

→ Ссылка