常见IO流简介

Halima ·
更新时间:2024-11-14
· 608 次阅读

常见IO流简介 一:IO流结构图

在这里插入图片描述

二.IO流类

流(对象)是在内存与存储设备之间传输数据的通道

1.方向: a. 输出流:用以将中的内容写入到当中。 b. 输入流:用以将中的内容读入到当中。 2. 单位: a. 字节流:以字节为单位,可以读写所有数据。 b. 字符流:以字符为单位,可以读写文本数据。 3. 功能: a. 节点流:实际传输数据。 b. 过滤流:强加节点流功能。

常见的字节流: 文件流:FileOutputStream 和 FileInputStream 缓冲流:BufferedOutputStream 和 BufferedInputStream 对象流:ObjectOutputStream 和 ObjectInputStream 常见的字符流:

字节转字符流:InputStreamReader 和 OutputStreamWriter

缓冲字符流:PrintWriter 和 BufferedReader

三.八个IO流类 1.FileInputStream和FileOutputStream (文件字节输入流和文件字节输出流)

属性:字节流

主要方法:分别为read() 读一个字节 和 read(byte[]) 读一个字节数组

​ writer() 写一个字节 和 writer(byte[]) 写一个字节数组

用途:用于字节文件(图像,影音等)的文件传输

代码提示:

//图像复制: String path="D:"+File.separator +"test.png"; String resultPath="D:"+File.separator +"test1.png"; File file=new File(path); //File resultfile=new File(path); FileInputStream fin = null; FileOutputStream fout = null; try{ fin =new FileInputStream(file); fout = new FileOutputStream(resultpath,true); int result=0; while((result=fin.read()!=-1){ fout.write(result); } }catch (IOException e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } }

tip:

一个文件只能打开一个方向的流通道 输出流会自己新建文件,但不会新建目录 2.FileReader和FileWriter(文件字符输入流和文件字符输出流)

属性:字符流

主要方法: read() 读一个字符 和read(char[])

​ writer() 写一个字符 和writer(char[])

用途:文本文件的传输

代码提示: 如上图

3.BufferedInputStream和BufferedOutputStream(缓冲字节输入流和缓冲字节输出流)

属性:缓冲流 字节流

用途:字节流的用法,但速度更快

代码提示:

4.BufferedReader和BufferedWriter(缓冲字符输入流和缓冲字符输出流)

属性: 缓冲流 字符流

主要方法:多了一个readLine()和newLine()等

用途:字符流的用途,速度更快

代码提示:

String path = "D:" + File.separator + "test.txt"; String resultpath = "D:" + File.separator + "test1.txt"; BufferedReader br = null; BufferedWriter bw = null; char[] a = new char[100]; try { br = new BufferedReader(new FileReader(path)); bw = new BufferedWriter(new FileWriter(resultPath, true)); // --------------------------第一种 /*br.read(a); String st = new String(a); System.out.println(st); bw.write(st);*/ // -------------更简洁的另一种,但没有中间变量st int temp = 0; while ((temp = br.read()) != -1) { bw.write(temp); } // ----------------------- } catch (IOException e) { e.printStackTrace(); } finally { CloseIO.charClose(br, bw);//自己写的封装的流的关闭 } 四.详解 字符流本质是字节流的拓展封装 缓冲流是字节流和字符流的包装,使用缓冲流效率更好 InputStreamReader是从字节流到字符流的桥接器 InputStreamReader rd = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(rd); String readLine = br.readLine(); //-----------------------------第二种 InputStream is = client.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String rl = br.readLine();

4.网络编程中,Java用的是对象流Socket


作者:bigbeardhk



io io流

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章