搜狗网站排名怎么做,成都龙泉建设网站,雄安网站建设推广,赣州企业网IO流
概述#xff1a;IO流#xff0c;输入输出流#xff08;Input Output#xff09;流#xff1a;一种抽象的概念#xff0c;对数据传输的总称。#xff08;数据在设备之间的传输称为流#xff09;常见的功能 文件复制文件上传文件下载 学习流#xff0c;我们要搞懂…IO流
概述IO流输入输出流Input Output流一种抽象的概念对数据传输的总称。数据在设备之间的传输称为流常见的功能 文件复制文件上传文件下载 学习流我们要搞懂流的方向这个是很重要的一个事情 输入-读数据 从硬盘到程序输出-写数据 从程序到硬盘 IO流分类 按照数据流向 输入流输出流 按照数据类型 字节流字符流 如何判断使用哪种流 通过自带记事本打开能读懂内容用字符流一般使用字节流 字节流
字节输入流
InputStream
概述这个抽象类是字节输入流所有类的超类
FileInputStream 概述文件输入流InputStream 的子类 作用将数据从硬盘读出展示到控制台上 常用方法 方法作用FileInputStream(String name)通过打开与实际文件的连接来创建一个 FileInputStream,该文件由文件系统中的路径名 name 命名int read()从该输入流读取一个字节数据空值为-1int read(byte[] bys)从该输入流读取一个字节数组空值为-1 常用的两种读取格式 // 一次读取一个字节数据
int by;
while((by fis.read()) ! -1){System.out.print((char)by);
}// 一次读取一个字节数组
byte[] bys new byte[1024];
int len;
while((len fis.read(bys)) ! -1){System.out.print(new String(bytes, 0, len));
}代码演示 首先在 D 盘创建 一个 a.txt 文件内容 abc123 注意fis.read(bys) 一次最大读取 1024 个数据放入 bys 数组中返回 当前读取的字符长度
字节输出流
OutputStream
概述这个抽象类是表示字节输出流的所有类的超类
FileOutputStream 概述文件字节输出流 作用将数据写入到硬盘中 常用方法 方法作用FileOutputStream(String name)创建文件输出流以指定的名称写入文件void write(int b)将指定的字节写入此文件输出流(一次写一个字节数据)void write(byte[] b)将b.length字节从指定的字节数组写入此文件输出流一次写一个字节数组数据void write(byte[] b , int off , int len)将len字节从指定的字节数组开始从偏移量off开始写入此文件输出流一次写一个字节数组的部分数据 代码演示 public class Test {public static void main(String[] args) throws IOException {// 创建文件字节输出流对象FileOutputStream fos new FileOutputStream(D:\\b.txt);// 一次写一字节fos.write(65);// 一次写一字节数组byte[] bys {97,98,99,100};fos.write(bys);// 从指定位置写fos.write(bys,1,2);// 创建文件字节输入流对象FileInputStream fis new FileInputStream(D:\\b.txt);// 读数据byte[] b new byte[1024];int len;while((len fis.read(b)) ! -1){System.out.println(new String(b,0,len));}}
}注意FileOutputStream 我们直接调用写方法的时候并未创建文件 b.txt,但是它自己生成了所以默认当无此文件时先创建再写入
字节缓冲流
BufferedOutputStream 概述字节缓冲输出流。该类实现缓冲输出流应用程序可以向底层输出流写入字节而不必为写入的每个字节导致底层系统的调用 构造方法 方法作用BufferedOutputStream(OutputStream os)根据字节输出流对象创建一个字节缓冲输出流对象
BufferedInputStream 概述字节缓冲输入流。创建BufferedInputStream将创建一个内部缓冲区数组当从流中读取或跳过字节时内部缓冲区将根据需要从所包含的输入流中重新填入一次很多字节 方法作用BufferedInputStream(InputStream is)根据字节输入流对象创建一个字节缓冲输入流对象 注意字节缓冲流仅仅提供缓冲区而真正的读写数据还是依靠基本的字节流对象进行操作 字符流
概述字符流 字节流 编码表 不能直接写到文本中需要刷新操作
字符输入流
Reader
概述字符输入流的抽象类
FileReader 概述用于读取字符文件的便捷类 方法作用FileReader(String fileName)创建一个字符输入流对象 常用方法和字节流的一样只不过字节变成了字符
字符输出流
Writer
概述 字符输出流的抽象类
FileWriter 概述用于写入字符文件的便捷类 方法作用FileWriter(String fileName)创建一个字符输出流对象void flush()刷新资源 常用方法和字节流的一样只不过字节变成了字符 注意这里写数据后要调用 flush() 方法进行刷新才行否则不会显示
字符缓冲流
BufferedReader 概述字符缓冲输入流读数据可以指定缓冲区大小默认大小已经足够大多数用途 常用方法和特有方法 方法作用BufferedReader(Reader in)创建一个字符缓冲输入流对象String readLine()读一行文字结果包含行的内容的字符串不包括任何行终止字符如果流的结尾已经到达则为null 代码格式 String line;
while((line br.readLine()) ! null){System.out.println(line);
}BufferedWriter 概述字符缓冲输出流写数据可以指定缓冲区大小默认大小已经足够大多数用途 常用方法和特有方法 方法作用BufferedWriter(Writer out)创建一个字符缓冲输出流对象void newLine()写一行行分隔符行分隔符字符串由系统属性定义 写数据步骤 bw.writer(line); // 写数据
bw.newLine(); // 换行
bw.flush(); // 刷新资源IO流总结
字节流可以复制任意文件数据一般采用字节缓冲流一次读写一个字节数组的方式字符流只能复制文本数据一般采用字符缓冲流的特有功能 案例
字节流文件复制
public class Test {public static void main(String[] args) throws IOException {// 创建 文件字节输入流和输出流对象FileInputStream fis new FileInputStream(D:\\a.txt);FileOutputStream fos new FileOutputStream(D:\\b.txt);// 定义字节数组,用来存储读取到的字节byte[] bys new byte[1024];// 存储读取到的字节长度int len;while((len fis.read(bys)) ! -1){// 将读取到的数据写入新文件中fos.write(bys,0,len);}// 释放流fis.close();fos.close();}
}字节缓冲流文件复制
public class Test {public static void main(String[] args) throws IOException {// 创建字节缓冲输入流和输出流对象BufferedInputStream bis new BufferedInputStream(new FileInputStream(D:\\a.txt));BufferedOutputStream bos new BufferedOutputStream(new FileOutputStream(D:\\b.txt));// 定义字节数组byte[] bys new byte[1024];int len;while((len bis.read(bys)) ! -1){bos.write(bys,0,len);// 记得刷新要不不显示bos.flush();}// 释放流bis.close();bos.close();}
}字符流文件复制
public class Test5 {public static void main(String[] args) throws IOException {// 创建文件字符输入流和输出流对象FileReader fr new FileReader(D:\\a.txt);FileWriter fw new FileWriter(D:\\b.txt);// 定义字符数组char[] chs new char[1024];int len;while((len fr.read(chs)) ! -1){fw.write(chs,0,len);// 记得刷新fw.flush();}// 释放流 fr.close();fw.close();}
}字符缓冲流文件复制
public class Test6 {public static void main(String[] args) throws IOException {// 创建 字符缓冲输入流和输出流对象BufferedReader br new BufferedReader(new FileReader(D:\\a.txt));BufferedWriter bw new BufferedWriter(new FileWriter(D:\\b.txt));// 定义存储 数据的 字符串String s;while((s br.readLine()) ! null){bw.write(s);// 换行bw.newLine();// 刷新bw.flush();}// 释放流br.close();bw.close();}
}