Двоичный файл не сохраняется, если длина строки не одинакова - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь сохранить текст и значение int в двоичном файле, но он не работает должным образом.

Это мой код.

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.Scanner;
import java.io.InputStreamReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FilterOutputStream;
import java.io.FileOutputStream;
import java.util.Random;
public class Test{

    public static void main(String[] args) throws FileNotFoundException, IOException {
        Scanner input=new Scanner(System.in);
        System.out.println("Enter first name of doctor : ");
        String fn=input.next();
        System.out.println("enter middle name of doctor : ");
        String mn=input.next();
        FileOutputStream os=new FileOutputStream("Doctorsdata.txt");
        DataOutputStream file=new DataOutputStream(os);

        file.writeUTF(fn.trim());
        file.writeUTF(mn.trim());

        FileInputStream osb=new FileInputStream("Doctorsdata.txt");
        DataInputStream osa=new DataInputStream(osb);
        System.out.println("a "+osa.readUTF());
        System.out.println("b "+osa.readUTF());
        file.close();
}
}

Это мой ввод

fn                        mn                         Output
abc                       def                         ̀a扡c搃晥
abc                       defg                         abc defg

Если я напишу fn и mn одинаковой длины, это будет работать, а если они не одинаковой длины, это не будет работать, как описано выше.Также, если у меня есть 3-я переменная типа byte, и я напишу как file.writeByte(age); в случае первого ввода, это не будет работать.

Что я делаю не так?

Спасибо.

...