IO流
1.字节流
1.1 InputStream
1.1.1 FileInputStream
(1) read()方法

注:
1、此方法是从输入流中读取一个数据的字节,即每调用一次read方法,从FileInputStream中读取一个字节。
2、返回下一个数据字节,如果已达到文件末尾,返回-1。

3、如果没有输入可用,则此方法将阻塞。Scannner sc = new Scanner(System.in);其中System.in就是InputStream
1 package IO.InputStreamDemo; 2 3 import java.io.FileInputStream; 4 5 6 public class FileInputStreamDemo { 7 8 public static void main(String[] args){ 9 String path="C:/Users/hp/Desktop/IO_Test/InputStreamTest/one.txt"; 10 FileInputStream f=null; 11 try{ 12 13 f=new FileInputStream(path); 14 int r; 15 while((r=f.read())!=-1){ 16 System.out.print((char)r); 17 } 18 19 }catch(Exception e){ 20 e.printStackTrace(); 21 }finally{ 22 try { 23 //关闭 24 f.close(); 25 }catch (Exception e){ 26 e.printStackTrace(); 27 } 28 } 29 30 } 31 }
(2)read(byte[] b) 方法

注:
解读:
1、最多b.length个字节的数据读入一个byte数据组中,即,最多将byte数组b填满;
2、返回读入缓冲的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回-1。

1 package IO.InputStreamDemo; 2 3 import java.io.FileInputStream; 4 import java.util.Arrays; 5 6 7 public class FileInputStreamDemo { 8 9 public static void main(String[] args){ 10 String path="C:/Users/hp/Desktop/IO_Test/InputStreamTest/one.txt"; 11 FileInputStream f=null; 12 try{ 13 14 f=new FileInputStream(path); 15 16 //通常选择建立一个字符数组,将读到的内容存到里面,充当缓冲的作用 17 byte[] b=new byte[1024]; 18 int len; 19 while((len=f.read(b))!=-1){ 20 System.out.print(new String(b)); 21 22 } 23 24 }catch(Exception e){ 25 e.printStackTrace(); 26 }finally{ 27 try { 28 //关闭 29 f.close(); 30 }catch (Exception e){ 31 e.printStackTrace(); 32 } 33 } 34 35 } 36 }
1.1.2 DateInputStream
DataInputStream数据输入流允许应用程序以机器无关的方式从底层输入流中读取基本的Java类型.
DataInputStream必须与DataOutputStream搭配使用,即用DataInputStream只能读由DataOutputStream写的内容,且读写顺序必须保持一致
1 package IO.OutputStreamDemo; 2 3 import java.io.DataOutputStream; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 8 public class DataOutputStreamDemo { 9 10 public static void main(String[] args) throws IOException { 11 12 String path="data"; 13 14 //FileOutputStream 为节点流 15 FileOutputStream f=new FileOutputStream(path); 16 17 //DataOutputStream为处理流,即 “连接” 在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。 18 DataOutputStream dops=new DataOutputStream(f); 19 20 byte b=100; 21 short s=200; 22 long l=400l; 23 float fl=3.0f; 24 double d=3.14; 25 boolean sex=false; 26 char c='a'; 27 28 29 //写,把数据以及数据的类型一并写入文件中 30 //可以理解为专属流 31 //往读外取数据的时候必须按照顺序进行:即先写什么,先读什么 32 dops.writeByte(b); 33 dops.writeShort(s); 34 dops.writeLong(l); 35 dops.writeFloat(fl); 36 dops.writeDouble(d); 37 dops.writeBoolean(sex); 38 dops.writeChar(c); 39 dops.flush();//刷新 40 dops.close();//关闭 41 System.out.println("完成写操作"); 42 43 44 } 45 }
1 package IO.InputStreamDemo; 2 3 import java.io.DataInputStream; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.IOException; 7 8 public class DateInputStreamDemo { 9 10 public static void main(String[] args) throws IOException { 11 12 String path="data"; 13 14 15 //FileInputStream是节点流 16 FileInputStream fips=new FileInputStream(path); 17 18 //DataInputStream为处理流,即 “连接” 在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。 19 DataInputStream dips=new DataInputStream(fips); 20 21 22 //读的顺序必须与写的顺序一样,即先写什么,就必须先读什么 23 byte b=dips.readByte(); 24 short s=dips.readShort(); 25 long l=dips.readLong(); 26 float f=dips.readFloat(); 27 double d=dips.readDouble(); 28 boolean sex=dips.readBoolean(); 29 char c=dips.readChar(); 30 31 dips.close();//关闭 32 33 System.out.println(b); 34 System.out.println(s); 35 System.out.println(l); 36 System.out.println(d); 37 System.out.println(sex); 38 System.out.println(c); 39 40 } 41 }

浙公网安备 33010602011771号