IO流 字符流 字节流 缓冲流 文件的复制
IO流
IO概述
IO流就是一个管道,是用来在设备之间传输数据
input:相对于内存/程序 往进走输入流
output:相对于内存/程序 往硬盘写入
分类
根据数据进出方式
1、输出流:
- FileWriter 字符输出流
- BufferedWriter 字符缓冲输出流
2、输入流:
- FileReader
- BufferedReader
根据读写数据的方式
- 字符流:文本文件 字符存储。读写过程可以按照一个或多个字符进行读写
字节流:图片、视频、音频 可以读取任何格式的文件。读写过程中可以一个或多个字节的读写
OutputStream
- FileOutSteram
- BufferedOutputSteram
- InputStream
- FileInputStream
- BufferedInputStream
在计算机底层存储任何文件是,都是按照字节的形式进行存储的。
利用字符流实现文件拷贝
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;/*** 利用字符流实现文件的拷贝* @author YandeHu**/
public class DemoFileCopy {public static void main(String[] args) throws Exception {//创建输入输出对象FileReader fr=new FileReader("E:\\01\\01\\a.txt");FileWriter fw=new FileWriter("E:\\01\\01\\b.txt");BufferedReader br=new BufferedReader(fr);BufferedWriter bw= new BufferedWriter(fw);//定义字符串类型的变量String line=null;while((line=br.readLine())!=null){System.out.println(line);bw.write(line);bw.newLine();bw.flush();}//关闭流bw.close();br.close();System.out.println("拷贝完成");}
}
字节流
- InputStream
- 构造方法
- read方法
- OutputStram
- 构造方法
- writer方法
文件字节输入\输出流的使用
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;public class DemoCoqyStream {public static void main(String[] args) throws Exception {//创建字节输入、输出流copyFile01();copyFile02();}/*** 封装方法* @throws Exception */public static void copyFile01() throws Exception{FileInputStream fi=new FileInputStream("E:\\01\\01\\1.jpg");FileOutputStream fo=new FileOutputStream("E:\\01\\01\\2.jpg");//读文件int len=-1;while((len=fi.read())!=-1){fo.write(len);}System.out.println("复制成功");fi.close();fo.close();}/*** 封装方法 一次复制一个数组的* @throws Exception */public static void copyFile02() throws Exception{FileInputStream fi=new FileInputStream("E:\\01\\01\\1.jpg");FileOutputStream fo=new FileOutputStream("E:\\01\\01\\3.jpg");//读取文件byte [] b=new byte[1024];int len=-1; //0 代表没有数据while((len=fi.read(b))!=-1){fo.write(b,0,len);}fi.close();fo.close();System.out.println(len+"复制成功");}
}
缓冲字节流输入\输出的使用
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;/*** 利用缓冲字节流* @author YandeHu**/
public class DemoStreamBuffer {public static void main(String[] args) throws Exception {BufferedInputStream bis=new BufferedInputStream(new FileInputStream("b.txt"));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("c.txt"));//硬盘写bos.write("hello".getBytes());System.out.println("写入成功");//读byte []b=new byte[10];int len=-1;while((len=bis.read(b))!=-1){System.out.print(new String(b,0,len));}//bos.close();bis.close();}
}
利用字符输出流实现对文件内容的复制
过程是:先将要拷贝的文件读入到内存中,在将内容写入到另一个文件
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;/*** 利用字符流实现文件的拷贝* @author YandeHu**/
public class DemoFileCopy {public static void main(String[] args) throws Exception {//创建输入输出对象FileReader fr=new FileReader("E:\\01\\01\\a.txt");FileWriter fw=new FileWriter("E:\\01\\01\\b.txt");BufferedReader br=new BufferedReader(fr);BufferedWriter bw= new BufferedWriter(fw);//定义字符串类型的变量String line=null;while((line=br.readLine())!=null){System.out.println(line);bw.write(line);bw.newLine();bw.flush();}//关闭流bw.close();br.close();System.out.println("拷贝完成");}
}
利用缓冲字节输入\输出流实现单击文件目录内容的拷贝
步骤:方法的功能是 将指定文件的内容拷贝到目标目录,main函数的里的功能是遍历指定文件目录,如果文件的目录存在则复制文件到目标文件。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;/*** 复制单级文件夹* @author YandeHu*1、创建缓冲输入输出对象*2、读数据(一个字节数组,存储每次读到的一个数组的数据 ,定义一个整型 记录读取字节个数)*3、循环**/
public class DemoText {public static void main(String[] args) throws Exception {File file=new File("E:\\01\\01\\3.jpg");String destPath="E:\\01\\02";File dir=new File("E:\\01");File[] listFiles = dir.listFiles();if(listFiles==null){return;}else{//遍历文件列表for (File f : listFiles) {if(f.exists()){copy(file, destPath);}}System.out.println("拷贝成功");}}public static void copy(File file,String destPath) throws Exception{//创建缓冲流BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destPath+"\\"+file.getName()));byte []bArray=new byte[1024];int len=-1;while((len=bis.read(bArray))!=-1){bos.write(bArray,0,len);//将数组的内容写入到文件中}bis.close();bos.close();}
}
IO流 字符流 字节流 缓冲流 文件的复制相关推荐
- 字符输出流,缓冲流和序列化
字符输出流,缓冲流和序列化 1. IO流 1.1 文件操作字符输出流 FileWriter文件操作输出字符流Constructor 构造方法FileWriter(File file);根据File类对 ...
- IO流 序列化反序列化 Properties 缓冲流 字节流 字符流
package com.llb.io;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundE ...
- 2※、封装流(包装流派)、缓冲流【字节缓冲流、字符缓冲流】-->【字节缓冲流、字符缓冲流】 、字符集、转换流以及打印流
封装流(包装流) ※缓冲流 [字节缓冲流.字符缓冲流] 缓冲流[字节流]文件复制以及BufferedOutputStream的源码查看 缓冲流[字符流] [读取操作.写出操作] 练习:文本排序:请将文 ...
- 运用字节流实现txt文件的复制
一.运用FileInputStream和InputStreamReader 1.代码部分(这里只列出了main方法中代码) try{ //文件输入流 F ...
- 【Java-IO】File、搜索删除剪切、字符集、字符编码、字节流、将内存中的数据写入文件、字符流、缓冲流、Scanner、格式化输出、数据流、对象流、序列化与反序列化、Files工具类
IO 文章目录 IO 简介 File 分隔符.大小写 常用方法 练习:搜索.删除.剪切 字符集(Character Set) 字符编码(Character Encoding) 字符编码比较 乱码 字节 ...
- 【Java I/O流】File、字符集、字节流、字符流、缓冲流、数据流、对象流、序列化、try-with-resources语句
I/O流 File File 常用方法 File 练习:搜索.删除.剪切 字符集(Character Set) 字符编码(Character Encoding) 字符编码比较 乱码 try-with- ...
- 进阶15 IO流+字节字符输入输出+IO异常处理+属性集+缓冲流+各种编码+序列化
IO概述 什么是IO 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了.当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里.那么数据都是在哪些 ...
- JAVA I/O流 字符流和字节流、节点流和处理流(包装流、过滤流)、缓冲流
JAVA IO流 一.相关概念 1.分类: 区别和联系 代码 嵌套的IO流关闭的问题 一.相关概念 I/O流: Input/Output Stream,文件输入输出流. 1.分类: 输入流 和 输出流 ...
- JavaSE(字符流、IO资源的处理、属性集、ResourceBundle工具类、缓冲流、转换流、序列化、打印流、装饰设计模式、commons-io工具包)
JavaSE 字符流 字符输入流[Reader] 字符输入流Reader类的概述 字符输入流Reader类的常用方法 FileReader类 FileReader类的概述 FileReader类的构造 ...
最新文章
- 真正理解线程上下文类加载器(多案例分析)
- Struts配置文件务必采用正确的DTD
- windows下scrapy安装问题,以及Twisted安装报错(error: Microsoft Visual C++ 14.0 is required.)完美解决办法...
- python基础语法手册format-python基础知识之格式化
- JAVA正则忽略大小写
- 有关项目实施【老男孩】的经验分享
- ASP.NET 2.0便捷数据访问
- ajax获取json数据为undefined--原因解析
- 定时/计数器(定时和计数的功能)、定时器中断
- 如何利用开源项目,帮助企业免费搭建小程序官网
- Android 系统(16)---应用启动过程
- BurpSuite 设置Hostname Resolution
- 剑指_3.1数组中重复的数字(Python/C++)
- arcgis更改字段名_了解字段属性、别名和表显示选项
- Laravel 8.63.0 之 RabbitMQ 生产消费案例
- 【评测】义翘神州CHO细胞无血清培养基
- c语言矢量字体库,单片机用矢量字库的C语言调用
- Camera日记(一)-ISP
- 【四足机器人】学习笔记 欧拉角与旋转矩阵之间的转化关系
- 网站接入银联网上支付(B2B)