数据流是建立在FileInputStream和FileOutputStream上的一种IO流,它可以读写布尔值,整形,字符串。
但是要想使用FileInputStream读取数据,必须用FileOutputStream写入数据才行,因为数据在写入时会被标记,只有拥有此标记的数据才能被读取,否则会报错
这就是一份报错的代码
1 package IO流; 2 3 import java.io.FileInputStream; 4 import java.io.FileOutputStream; 5 import java.io.File; 6 import java.io.DataInputStream; 7 import java.io.DataOutputStream; 8 import java.io.IOException; 9 10 public class 数据流 { 11 12 public static void main(String[] args) { 13 File f=new File("D://1.txt"); 14 try( 15 FileInputStream fin=new FileInputStream(f); 16 DataInputStream din=new DataInputStream(fin); 17 ){ 18 String s=din.readUTF(); 19 int i=din.readInt(); 20 Boolean b=din.readBoolean(); 21 System.out.println(s); 22 System.out.println(i); 23 System.out.println(b); 24 }catch(IOException e) { 25 e.printStackTrace(); 26 } 27 } 28 }
这是一份成功写入后读取的的代码
1 package IO流; 2 3 import java.io.FileInputStream; 4 import java.io.FileOutputStream; 5 import java.io.File; 6 import java.io.DataInputStream; 7 import java.io.DataOutputStream; 8 import java.io.IOException; 9 10 public class 数据流 { 11 12 public static void main(String[] args) { 13 File f=new File("D://1.txt"); 14 try( 15 FileOutputStream fout=new FileOutputStream(f); 16 DataOutputStream dout=new DataOutputStream(fout); 17 FileInputStream fin=new FileInputStream(f); 18 DataInputStream din=new DataInputStream(fin); 19 ){ 20 dout.writeUTF("Hello, World!"); 21 dout.writeInt(123456); 22 dout.writeBoolean(true); 23 String s=din.readUTF(); 24 int i=din.readInt(); 25 Boolean b=din.readBoolean(); 26 System.out.println(s); 27 System.out.println(i); 28 System.out.println(b); 29 }catch(IOException e) { 30 e.printStackTrace(); 31 } 32 } 33 }
在编写代码的时候发现,数据流一次写入永久保存,读取操作并不会删除这些内容。并且写入流不会因为流的关闭而删除写入的内容,因此数据流不是一种缓存流而是一种直接和硬盘对接的IO流。
原文:https://www.cnblogs.com/wangqianming12138/p/14407640.html