java流分类_什么是流分类-JAVA中什么是流?流经常按照哪几种方式分类,每种方式又将流各分? 爱问知识人...

一、 IO 流的三种分类方式 1。 按流的方向分为:输入流和输出流 2。 按流的数据单位不同分为:字节流和字符流 3。 按流的功能不同分为:节点流和处理流 二、 IO 流的四大抽象类: 字符流: Reader Writer 字节流: InputStream (读数据) OutputStream (写数据) 三、 InputStream 的基本方法 int read () throws IOException 读取一个字节以整数形式返回,如果返回 -1 已到输入流的末尾 void close () throws IOException 关闭流释放内存资源 long skip ( long n ) throws IOException 跳过 n 个字节不读 四、 OutputStream 的基本方法 void write ( int b ) throws IOException 向输出流写入一个字节数据 void flush () throws IOException 将输出流中缓冲的数据全部写出到目的地 五、 Writer 的基本方法 void write ( int c ) throws IOException 向输出流写入一个字符数据 void write ( String str ) throws IOException 将一个字符串中的字符写入到输出流 void write ( String str , int offset , int length ) 将一个字符串从 offset 开始的 length 个字符写入到输出流 void flush () throws IOException 将输出流中缓冲的数据全部写出到目的地 六、 Reader 的基本方法 int read () throws IOException 读取一个字符以整数形式返回,如果返回 -1 已到输入流的末尾 七、节点流类型

八、访问文件之 FileInputStream 和 FileOutputStream 继承基类用于向文件中输入输出字节 九、访问文件之 FileReader 和 FileWriter 继承基类用于向文件中输入输出字符 ---- 输出流在构造函数第二个参数可以设置 true 意义为跟在已有文件后进行输入

---- 此类流会抛出 FileNotFoundException 需要对其进行显示捕捉 十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。

此处理流的构造方法都得传相对应的基类类型 BufferedReader :提供了 readLine 方法用于高效读取一行字符串 BufferedWriter :提供了 newLine 用于写入一个行分隔符也就是换行 BufferedInputStream 没多大用处 BufferedOutputStream 没多大用处 十一、转换流:主要作用将字节流转换成字符流。

用处较大! 转换流在构造时可以指定其编码集合 InputStreamReader 需要和 InputStream 套接 OutputStreamWriter 需要和 OutputStream 套接 例: OutputStreamWriter osw = new OutputStreamWriter ( new FileOutputStream (文件路径); 方法例: osw。

getEncoding (); 获得流的编码方式 十二、数据流与字节数组流: 数据流主要为实现可以 存取 Java 原 始数据类型如 long , boolean 数据流是字节流 DataInputStream 需要和 InputStream 套接 DataOutputStream 需要和 OutputStream 套接 DataInputStream 方法: readBoolean () readInt () read…… () …… readUTF (): 网络传输 常用方法 读一个 Unicode 字符串 DataOutputStream 方法与 DataInputStream 基本对应为写的方法 // 此构造函数等于已可以往一个字节数组里输入内容 ByteArrayOutputStream baos = new ByteArrayOutputStream (); // 此方法为获取一个字节数组方法返回字节数组 baos。

toByteArray (); // 此方法获取字节数组占了多少字节 new ByteArrayInputStream (一个字节数组)。 available () ByteArrayOutputStream baos =new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); try { dos。

writeDouble(Math。random()); dos。writeBoolean(true); ByteArrayInputStream bais =new ByteArrayInputStream(baos。

toByteArray()); System。out。println(bais。available()); DataInputStream dis = new DataInputStream(bais); System。

out。println(dis。readDouble()); System。out。println(dis。readBoolean()); dos。close(); dis。close(); } catch(IOException e){ e。

printStackTrace(); } 十二、 Print 流 Print 流只有输出流无输入流, PrintWriter 和 PrintStream 分别针对字符字节 两个类提供了重载的 Print 和 Println 方法用于多种数据类型的输出 PrintWriter 和 PrintStream 的输出操作不会抛出异常 PrintWriter 和 PrintStream 有自动 flush 功能 ----System。

setOut( 接收 OutputStream 类 ): 用于设置系统默认输出流 十二、 Object 流 等同于 c# 序列化,用直接将 Object 写入或读出 transient 关键字为不序列化此成员变量 需要序列化的类必须实现 Serializable 接口 主要方法: writeObject ( Object ); readObject (); 读出为 Object 类型需要强转数据类型 import java。

io。*; public class TestObjectIO { public static void main(String args[]) throws Exception { T t = new T(); t。

k = 8; FileOutputStream fos = new FileOutputStream(“d:/share/java/io/testobjectio。dat“); ObjectOutputStream oos = new ObjectOutputStream(fos); oos。

writeObject(t); oos。flush(); oos。close(); FileInputStream fis = new FileInputStream(“d:/share/java/io/testobjectio。

dat“); ObjectInputStream ois = new ObjectInputStream(fis); T tReaded = (T)ois。readObject(); System。

out。println(tReaded。i + “ “ + tReaded。j + “ “ + tReaded。d + “ “ + tReaded。k); } } class T implements Serializable { int i = 10; int j = 9; double d = 2。

3; transient int k = 15; }。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值