数据输入/输出流(DateInputStream类与DateOutStream类)允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型。也就是说,在读取一个数据时,不在关心这个数值应当是哪种字节。
package MyPackage_1;import java.io.*;public class MyClass {public static void main(String[] args) throws IOException {File f = new File("word.txt");try {FileOutputStream fos=new FileOutputStream(f);DataOutputStream dos=new DataOutputStream(fos);dos.writeUTF("在属于未来的星空,无畏闪耀!");dos.writeDouble(3.14);dos.writeBoolean(false);dos.writeInt(520);/*整数后面不能直接添加小数,否则会无法正常读取*/dos.close();fos.close();} catch (IOException e) {e.printStackTrace();}try {FileInputStream fis=new FileInputStream(f);DataInputStream dis=new DataInputStream(fis);System.out.println(dis.readUTF());/*只要使用readUTF才能读出文件中的内容*/System.out.println(dis.readDouble());System.out.println(dis.readBoolean());System.out.println(dis.readInt());dis.close();fis.close();} catch (FileNotFoundException e) {e.printStackTrace();}}}
运行结果:
出现乱码的原因:(了解即可)
文本是二进制的,除了用dos.writeUTF(“xxx”)写入的内容可以通过UTF-8编码打开看到以外其他的都是不可见的字符,系统记事本是用GBK编码打开的文本,所以会出现一些中文乱码,可以用其他记事本软件用UTF-8编码打开,DataOutputStream是写二进制的,要写文本字符串可以用其他的。(反正就是编码不一致的问题)
