IO流总结

1.IO流的分类

概述:
	IO:输入/输出(Input/Output)
	流:是一种抽象概念,对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输
	IO流就是用来处理设备间数据传输问题的
	常见的应用:文件复制;文件上传;文件下载
分类:
		--按照“流”的数据流向,可以将其化分为:输入流和输出流
		--按照“流”中处理数据的单位,可以将其区分为:字节流和字符流。
			  --字节流的抽象基类:
			  InputStream,OutputStream
				字符流的抽象基类:
			  Reader,Writer

2.file类:

概述:java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

构造方法:
// 文件路径名
	String pathname = "D:\\aaa\\bbb.txt";
	File file2 = new File(pathname); 
	
	// 通过父路径和子路径字符串
	 String parent = "d:\\aaa";
	 String child = "bbb.txt";
	 File file3 = new File(parent, child);
	
	// 通过父级File对象和子路径字符串
	File parentDir = new File("d:\\aaa");
	String child = "bbb.txt";
	File file4 = new File(parentDir, child);
常见方法:
public String getAbsolutePath() ` :返回此File的绝对路径名字符串。
public String getPath() :将此File转换为路径名字符串。
public String getName() :返回由此File表示的文件或目录的名称。
public long length() :返回由此File表示的文件的长度。
public class FileGet {
    public static void main(String[] args) {
        File f = new File("d:/aaa/bbb.java");     
        System.out.println("文件绝对路径:"+f.getAbsolutePath());
        System.out.println("文件构造路径:"+f.getPath());
        System.out.println("文件名称:"+f.getName());
        System.out.println("文件长度:"+f.length()+"字节");

        File f2 = new File("d:/aaa");     
        System.out.println("目录绝对路径:"+f2.getAbsolutePath());
        System.out.println("目录构造路径:"+f2.getPath());
        System.out.println("目录名称:"+f2.getName());
        System.out.println("目录长度:"+f2.length());
    }
}
输出结果:
文件绝对路径:d:\aaa\bbb.java
文件构造路径:d:\aaa\bbb.java
文件名称:bbb.java
文件长度:636字节
目录绝对路径:d:\aaa
目录构造路径:d:\aaa
目录名称:aaa
目录长度:4096

3.字节流:

字节流抽象基类
InputStream:这个抽象类是表示字节输入流的所有类的超类
OutputStream:这个抽象类是表示字节输出流的所有类的超类

输入流相关读写方法:

	int read()	//从输入流读取一个8位的字节,转换成0~255之间的整数。

	int read(byte [] b) //从输入流读取若干字节,保存到字节数组中,返回的整数表示读取字节的数目
	
	int read(byte[] b,int off,int len)//从输入流读取若干字节,保存到指定的字节数组中,off指定字节数组开始保存数据的起始下标, len表示读取的字节数目

在这里插入图片描述
带缓冲区的字符输入流:BufferedReader:

字节缓冲流:

BufferOutputStream:该类实现缓冲输出流。通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用
BufferInputStream:创建BufferInputStream将创建一个内部缓冲区数组。当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节

在这里插入图片描述
输出流相关方法:

void write(int b)//向输出流写入一个字节。

void write(byte[] b)//把参数b指定的字节数组的所有字节写到输出流。

void write(byte [] b,int off,int len)//将指定byte数组从偏移量off开始的len个字节写入输出流。

在这里插入图片描述
三、输出、输出流结合使用:copy

在这里插入图片描述
4.字符流:

字符流抽象基类:
Reader:输入流、继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符16位

Writer:输出流、继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)

字符输入流:

1.Reader:
方法:
	protected Reader()  创建一个新的字符流 reader,其重要部分将同步其自身的 reader。 
		
	protected Reader(Object lock)  创建一个新的字符流 reader,其重要部分将同步给定的对象。参数:lock - 要同步的对象。 
//试图将字符读入指定的字符缓冲区。缓冲区可照原样用作字符的存储库:所做的唯一改变是 put 操作的结果。不对缓冲区执行翻转或重绕操作。
//返回:添加到缓冲区的字符数量,如果此字符源位于缓冲区末端,则返回 -1
int  read(CharBuffer target)
//读取单个字符,返回:作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1
int  read() 
//将字符读入数组。返回每次所读取进入字符数组字符的个数,如果已到达流末尾,则返回 -1 
int read(char[] cbuf)	
//将字符读入数组的某一部分。返回每次所读取进入字符数组字符的个数,如果已到达流末尾,则返回 -1
int read(char[] cbuf, int off, int len)
//参数:cbuf - 目标缓冲区
//参数:off - 开始存储字符处的偏移量
//参数:len - 要读取的最多字符数

打印输入流PipedReader:

方法:
PipedReader()   创建尚未连接的 PipedReader。 
	
PipedReader(int pipeSize)   创建一个尚未连接的 PipedReader,并对管道缓冲区使用指定的管道大小。 
	
PipedReader(PipedWriter src)   创建连接到传送 writer src 的 PipedReader。 
	
PipedReader(PipedWriter src, int pipeSize)   创建一个 PipedReader,使其连接到管道 writer src,并对管道缓冲区使用指定的管道大小 

缓存流BufferedReader:

构造方法

BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流 
	
BufferedReader(Reader in, int sz)创建一个使用指定大小输入缓冲区的缓冲字符输入流 

非继承方法

String  readLine() 

//读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。 

//返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 

转换流InputStreamReader:

构造方法

InputStreamReader(InputStream in)  创建一个使用默认字符集的 InputStreamReader。 
	
InputStreamReader(InputStream in, Charset cs)   创建使用给定字符集的 InputStreamReader。 
	
InputStreamReader(InputStream in, CharsetDecoder dec)  创建使用给定字符集解码器的 
	
InputStreamReader InputStreamReader(InputStream in, String charsetName)  创建使用指定字符集的 InputStreamReader。 

非继承方法

String getEncoding() 返回此流使用的字符编码的名称。 

字符输出流:

1.Writer:

构造方法

protected  Writer()   创建一个新的字符流 writer,其关键部分将同步 writer 自身。 

protected Writer(Object lock)    创建一个新的字符流 writer,其关键部分将同步给定的对象
字符输出方法

void write(char[] cbuf)  // 写入字符数组。 
void write(char[] cbuf, int off, int len)   //写入字符数组的某一部分。 
void write(int c )   //写入单个字符。 
void write(String str)   // 写入字符串。
void write(String str, int off, int len)    //写入字符串的某一部分。  

2.打印输出流PrintWriter:

构造方法
在这里插入代码片//使用指定文件创建不具有自动行刷新的新 PrintWriter。 
PrintWriter(File file)  
//创建具有指定文件和字符集且不带自动刷行新的新 PrintWriter 
PrintWriter(File file, String csn)   

// 创建具有指定文件名称且不带自动行刷新的新 
PrintWriter(String fileName) 

// 创建具有指定文件名称和字符集且不带自动行刷新的新 
PrintWriter PrintWriter(String fileName, String csn) 

// 创建不带自动行刷新的新 PrintWriter。 
PrintWriter PrintWriter(Writer out)  

//根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。 
PrintWriter(OutputStream out)  

//通过现有的 OutputStream 创建新的 PrintWriter。
PrintWriter(OutputStream out, boolean autoFlush)   

//创建新 PrintWriter,如果为 true,则 println、printf 或 format 方法将刷新(flush)输出缓冲区,默认false 
PrintWriter(Writer out, boolean autoFlush  

3.转换流OutputStreamWriter:

构造方法:
OutputStreamWriter(OutputStream out)创建使用默认字符编码的 OutputStreamWriter。 
	
OutputStreamWriter(OutputStream out, Charset cs)创建使用给定字符集的 OutputStreamWriter。 

OutputStreamWriter(OutputStream out, CharsetEncoder enc) 创建使用给定字符集编码器的OutputStreamWriter。 

OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的 OutputStreamWriter 

非继承方法:
String getEncoding() 返回此流使用的字符编码的名称。 

4.缓冲输出流: BufferedWriter:

构造方法

BufferedWriter(Writer out   )创建一个使用默认大小输出缓冲区的缓冲字符输出流。 

BufferedWriter(Writer out, int sz) 创建一个使用给定大小输出缓冲区的新缓冲字符输出流。 

非继承方法

void newLine() 写入一个行分隔符。 

public void newLine() throws IOException {write(lineSeparator);} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值