为什么io流读取的时候显示方框

问题遇到的现象和发生背景
public class TestinputDemo {
    public static void main(String[] args) throws IOException {
//        需求:将一个用户信息写入到user.txt中然后读出来在控制台打印输出
        User user1 = new User("abc", "123456");
        User user2 = new User("a", "123456");
        User user3 = new User("b", "123456");
        User user4 = new User("c", "123456");
        /*************************************************************/
        File file = new File("E:\\Wooyoung\\桌面\\学习\\Java学习\\练习\\src\\class_\\class13\\file\\user2.txt");
        /*************************************************************/
        OutputStream os = new FileOutputStream(file);
        os.write((user1.toString() + "\n").getBytes());
        os.write((user2.toString() + "\n").getBytes());
        os.write((user3.toString() + "\n").getBytes());
        os.write((user4.toString() + "\n").getBytes());
        os.close();
        /*************************************************************/
        InputStream is = new FileInputStream(file);
        byte[] b = new byte[200];
        is.read(b);
        System.out.println(new String(b));
        is.close();
    }
}
问题相关代码,请勿粘贴截图

img

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

别人同样的代码没有出现这种问题!!

你创建的字节数组,并没有给他赋值,然后你读这个数组肯定也是没有值的,输出的这些符号应该是占位符号。给你一个建议,java当中目录不要出现中文。否则会出现一些奇怪的问题

你需要判断读到什么时候停止啊!
你这肯定需要读够200byte啊