IO流 字符流 字节流 缓冲流 文件的复制
2017-10-25 16:05
579 查看
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(); } }
相关文章推荐
- JAVA基础再回首(二十二)——转换流概述及用法、简化写法FileWriter和 FileReader、字符缓冲流及特殊用法、字节流字符流复制文件方法总结
- 20-IO流(字符流-缓冲区-LineNumberReader了解 21-IO流(字节流-操作文件基本演示). 22-IO流(字节流-练习-复制MP3)
- Java IO流 文件的复制的几种方法(字节流,字符流,缓冲流)
- Java基础之IO流,通过字节流缓冲区进行媒体文件的复制操作
- Java复制文件:字节流、字符流、数据流
- IO流——利用字节流缓冲区复制MP3文件
- JAVA io流 文件流 字节流 字符流 过滤流 缓冲流
- IOの利用字节流和字符流完成文件的复制demo
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
- 黑马程序员_字符流_字节流_IO异常处理_文件的续写_拷贝文本_缓冲流
- 对象字节流以及文件字符流、缓冲流、字符 输入输出流
- 【Java基础知识】IO流--字节流读写数据以及复制文件的几种方式
- java中的io流(输入输出流,序列化与反序列化,字节流 , 字符流,包装流,缓冲流)
- IO流__【概述】【字符文件的读写和复制】【字符流缓冲区】
- IO流----文件字节流、文件字符流
- 文件输入/出字节流、文件缓冲输入/出字节流、文件输入/出字符流、文件缓冲输入/出字符流复制文件
- Java基础小知识1——分别使用字节流和字符流复制文件
- IO流-输入输出流:字节流、字符流、缓冲流、转换流
- 使用字节流,字符流FileWriter和BufferedWriter通过复制同一文件,比较它们用时的多少
- 字节流,缓冲流,字符流复制程序案例