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. 字符输出流,缓冲流和序列化

    字符输出流,缓冲流和序列化 1. IO流 1.1 文件操作字符输出流 FileWriter文件操作输出字符流Constructor 构造方法FileWriter(File file);根据File类对 ...

  2. IO流 序列化反序列化 Properties 缓冲流 字节流 字符流

    package com.llb.io;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundE ...

  3. 2※、封装流(包装流派)、缓冲流【字节缓冲流、字符缓冲流】-->【字节缓冲流、字符缓冲流】 、字符集、转换流以及打印流

    封装流(包装流) ※缓冲流 [字节缓冲流.字符缓冲流] 缓冲流[字节流]文件复制以及BufferedOutputStream的源码查看 缓冲流[字符流] [读取操作.写出操作] 练习:文本排序:请将文 ...

  4. 运用字节流实现txt文件的复制

    一.运用FileInputStream和InputStreamReader 1.代码部分(这里只列出了main方法中代码) try{             //文件输入流             F ...

  5. 【Java-IO】File、搜索删除剪切、字符集、字符编码、字节流、将内存中的数据写入文件、字符流、缓冲流、Scanner、格式化输出、数据流、对象流、序列化与反序列化、Files工具类

    IO 文章目录 IO 简介 File 分隔符.大小写 常用方法 练习:搜索.删除.剪切 字符集(Character Set) 字符编码(Character Encoding) 字符编码比较 乱码 字节 ...

  6. 【Java I/O流】File、字符集、字节流、字符流、缓冲流、数据流、对象流、序列化、try-with-resources语句

    I/O流 File File 常用方法 File 练习:搜索.删除.剪切 字符集(Character Set) 字符编码(Character Encoding) 字符编码比较 乱码 try-with- ...

  7. 进阶15 IO流+字节字符输入输出+IO异常处理+属性集+缓冲流+各种编码+序列化

    IO概述 什么是IO 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了.当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里.那么数据都是在哪些 ...

  8. JAVA I/O流 字符流和字节流、节点流和处理流(包装流、过滤流)、缓冲流

    JAVA IO流 一.相关概念 1.分类: 区别和联系 代码 嵌套的IO流关闭的问题 一.相关概念 I/O流: Input/Output Stream,文件输入输出流. 1.分类: 输入流 和 输出流 ...

  9. JavaSE(字符流、IO资源的处理、属性集、ResourceBundle工具类、缓冲流、转换流、序列化、打印流、装饰设计模式、commons-io工具包)

    JavaSE 字符流 字符输入流[Reader] 字符输入流Reader类的概述 字符输入流Reader类的常用方法 FileReader类 FileReader类的概述 FileReader类的构造 ...

最新文章

  1. 真正理解线程上下文类加载器(多案例分析)
  2. Struts配置文件务必采用正确的DTD
  3. windows下scrapy安装问题,以及Twisted安装报错(error: Microsoft Visual C++ 14.0 is required.)完美解决办法...
  4. python基础语法手册format-python基础知识之格式化
  5. JAVA正则忽略大小写
  6. 有关项目实施【老男孩】的经验分享
  7. ASP.NET 2.0便捷数据访问
  8. ajax获取json数据为undefined--原因解析
  9. 定时/计数器(定时和计数的功能)、定时器中断
  10. 如何利用开源项目,帮助企业免费搭建小程序官网
  11. Android 系统(16)---应用启动过程
  12. BurpSuite 设置Hostname Resolution
  13. 剑指_3.1数组中重复的数字(Python/C++)
  14. arcgis更改字段名_了解字段属性、别名和表显示选项
  15. Laravel 8.63.0 之 RabbitMQ 生产消费案例
  16. 【评测】义翘神州CHO细胞无血清培养基
  17. c语言矢量字体库,单片机用矢量字库的C语言调用
  18. Camera日记(一)-ISP
  19. 【四足机器人】学习笔记 欧拉角与旋转矩阵之间的转化关系
  20. 网站接入银联网上支付(B2B)

热门文章

  1. Zookeeper ZAB协议原理浅析
  2. Rocksdb DeleteRange实现原理
  3. 二叉树:二叉搜索树的创建和插入
  4. Why Sleeping May Be More Important Than Studying
  5. Ubuntu终端命令行缩短显示路径
  6. 网页性能测试---webpagetest
  7. 【小白的CFD之旅】16 流程
  8. Linux Shell ssh登录脚本
  9. 通过正则表达式查找一个模式的所有实例
  10. 金融时报:谷歌撤离中国有99.9%的可能性