数据输入/输出流(DateInputStream类与DateOutStream类)允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型。也就是说,在读取一个数据时,不在关心这个数值应当是哪种字节。

    1. package MyPackage_1;
    2. import java.io.*;
    3. public class MyClass {
    4. public static void main(String[] args) throws IOException {
    5. File f = new File("word.txt");
    6. try {
    7. FileOutputStream fos=new FileOutputStream(f);
    8. DataOutputStream dos=new DataOutputStream(fos);
    9. dos.writeUTF("在属于未来的星空,无畏闪耀!");
    10. dos.writeDouble(3.14);
    11. dos.writeBoolean(false);
    12. dos.writeInt(520);
    13. /*
    14. 整数后面不能直接添加小数,否则会无法正常读取
    15. */
    16. dos.close();
    17. fos.close();
    18. } catch (IOException e) {
    19. e.printStackTrace();
    20. }
    21. try {
    22. FileInputStream fis=new FileInputStream(f);
    23. DataInputStream dis=new DataInputStream(fis);
    24. System.out.println(dis.readUTF());
    25. /*
    26. 只要使用readUTF才能读出文件中的内容
    27. */
    28. System.out.println(dis.readDouble());
    29. System.out.println(dis.readBoolean());
    30. System.out.println(dis.readInt());
    31. dis.close();
    32. fis.close();
    33. } catch (FileNotFoundException e) {
    34. e.printStackTrace();
    35. }
    36. }
    37. }

    运行结果:
    image.png
    出现乱码的原因:(了解即可)
    文本是二进制的,除了用dos.writeUTF(“xxx”)写入的内容可以通过UTF-8编码打开看到以外其他的都是不可见的字符,系统记事本是用GBK编码打开的文本,所以会出现一些中文乱码,可以用其他记事本软件用UTF-8编码打开,DataOutputStream是写二进制的,要写文本字符串可以用其他的。(反正就是编码不一致的问题)