Как записать целое число в файл, используя FileOutputStream? - PullRequest
0 голосов
/ 02 июля 2019

Когда я хочу записать текст в файл, я преобразовал его в байт, а затем сохранил его в массив байтов и затем отправил его с FileOutputStream в файл.Что мне делать, если я хочу написать целое число ??

    String filename = "testFile.txt";
    OutputStream os = new FileOutputStream(filename);
    String someText = "hello";
    byte[] textAsByte = someText.getBytes();
    os.write(textAsByte);

    int number = 20;
    byte numberAsByte = number.byteValue();
    os.write(numberAsByte);

Я получаю (Hello) ожидаемый результат: Hello20

Ответы [ 3 ]

1 голос
/ 02 июля 2019

Вы на самом деле не хотите писать целое число.Что вы хотите сделать, это написать строковое представление целого числа.Поэтому вам нужно преобразовать его в String, что вы легко можете сделать с String.valueOf(), чтобы 20 стало "20"

   os.write(String.valueOf(number).getBytes())

Если файл представляет собой текстовый файл, вы можете использоватьWriter вместо OutputStream, что означает, что вам не нужно беспокоиться о байтах.

   String filename = "testFile.txt";
   try (BufferedWriter out = new BufferedWriter(new FileWriter(filename))) {
        out.write("hello");
        out.write(String.valueOf(20));
   }

Также используйте try-with-resource, чтобы обернуть ваш OutputStream или Writer, чтобы вы ненужно беспокоиться о закрытии потока, если произойдет что-то неожиданное.

0 голосов
/ 02 июля 2019

Вы хотите записать строковое представление вашего номера в файл, поэтому вам нужно сначала преобразовать его в строку.

int number = 20;
os.write(Integer.toString(number).getBytes());
0 голосов
/ 02 июля 2019

Попробуйте что-то вроде этого:

public static void main(String[] args) throws IOException {
      FileOutputStream fos = null;
      byte b = 66;

      try {
         // create new file output stream
         fos = new FileOutputStream("C://test.txt");

         // writes byte to the output stream
         fos.write(b);

         // flushes the content to the underlying stream
         fos.flush();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...