IO流(4)—字符流
1.IO体系:
- 抽象基类 ——节点流(文件流)
- InputStream —— FileInputStream
- OutputStream ——FileOutputSteam
- Reader ——FileReader
- Writer ——FileWriter
2.分类:
- 按操作数据单位不同:字节流(8bit)主要处理除了文本文件以外的问文件、字符流(16bit)主要处理文本文件
- 按数据流的流向不同:输入流、输出流
- 按流的角色不同:节点流(直接作用于文件的:FileInputStream、FileOutputSteam、FileReader、FileWriter)、
- 处理流(除了以上四个之外都是) - 这里介绍字符流: - FileReader和FileWriter的使用
- 主要用于处理文本文件,非文本文件使用字节流
 
3代码实例:
public class FileReaderWriter {
    //执行以下方法,计算使用FileReader和FileWriter传输文件使用的时间
        @Test
        public void testCopyFile(){
            long start = System.currentTimeMillis();
            String src = "file/hello.txt";
            String dest = "file/hello4.txt";
            testFileWriter(src,dest);
            long end = System.currentTimeMillis();
            System.out.println("花费时间:"+(end - start));//花费时间为1毫秒
        }
    //读取一个文本文件,然后写入到另一个文本文件中
    //@Test
    public void testFileWriter(String str1,String str2){
        //1.定义两个File类对象
        File src = new File(str1);
        File dest = new File(str2);
        //2.定义字符流
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader(src);
            fw = new FileWriter(dest);
            char[] c = new char[24];
            int len;//用于记录每次读取字符的数量,
            //3.读取字符到数组中
            while((len = fr.read(c)) != -1){
                //4.写入到文本文件中,此时字符存在数组c当中,循环一次读取24个字符
                fw.write(c,0,len);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(fw != null){
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fr != null){
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    //读取一个文本文件到控制台
    @Test
    public void testFileReader(){
        //1.定义字符流对象
        FileReader fr = null;
        try {
            //2.定义文件对象
            File file = new File("file/hello.doc");
            fr = null;
            fr = new FileReader(file);
            char[] c = new char[24];
            int len;
            //3.把文件中的字符读入到字符数组中去
            while((len = fr.read(c)) != -1){
                //4.把字符数组转成字符串
                String str = new String(c,0,len);
                System.out.print(str);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if(fr != null){
            try {
                fr.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
IO流(4)—字符流的更多相关文章
- java IO流 之 字符流
		字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ... 
- JAVA IO 字节流与字符流
		文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节. ... 
- java io流(字符流) 文件打开、读取文件、关闭文件
		java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public sta ... 
- io系列之字符流
		java中io流系统庞大,知识点众多,作为小白通过五天的视频书籍学习后,总结了io系列的随笔,以便将来复习查看. 本篇为此系列随笔的第一篇:io系列之字符流. IO流 :对数据的传输流向进行操作,ja ... 
- Java IO 字节流与字符流 (五)
		Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字 ... 
- JAVA之IO流(字符流)
		字符流InputStreamReader和OutputStreamWriter是Writer和Read的子类:是字节流通向字符流的桥梁,也就是可以把字节流转化为字符流. InputStreamRead ... 
- (19)IO流之字符流FileReader和FileWriter,缓冲字符流---缓冲输入字符流BufferedReader和缓冲输出字符流BufferedWriter
		字符流,读取的文件是字符的时候,有两个基类一个是Reader,一个是Writer这有点拟人的感觉,人直接看懂的是文字 字符流 字节流:读取的是文件中的二进制字节流并不会帮你转换成看的懂得字符 字符流: ... 
- JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习
		JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了 ... 
- 【JAVA IO流之字符流】
		一.概述. java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中.流按照操作数据不同分为两种,字节流和字符流.流按照流向分为输入流,输出流. 输入输出的“入”和“出”是相当于内存来 ... 
- Java:IO流之字符流缓冲区详解
		字符流缓冲区: 1.缓冲区的出现提高了对数据的读写效率: 2.对应类:BufferedWriter.BufferedReader: 3.缓冲区要结合流才可以使用: 4.在流的基础上对流的功能进行了增强 ... 
随机推荐
- Dapper Helper
			using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ... 
- DataFrames和Kudu
			Kudu为Kudu表提供了一个自定义的原生数据源.可以和DataFrame API紧密集成: 使用DataFrame的好处就是可以从很多的数据源创建dataframe,包括现有的RDD,Hive表或S ... 
- Codeforces 1045C Hyperspace Highways (看题解) 圆方树
			学了一下圆方树, 好神奇的东西呀. #include<bits/stdc++.h> #define LL long long #define fi first #define se sec ... 
- vue 中如何对公共css、 js 方法进行单文件统一管理,全局调用
			1.前言 最近,为公司开发交付的一个后台管理系统项目,我使用了 Vue 框架进行开发实践. 模块化.组件化.工程化的开发体验非常好.良好的 api,优雅的设计,对于工程师非常友好. 但是由于模块比较多 ... 
- JavaScript 组数去重demo
			<!doctype html> <html> <head> <meta charset="utf-8"> <title> ... 
- Nginx报502错误,PHP最大执行时间设置
			PHP执行时间太长导致的 我在程序的最上方写了set_time_limit(0);不管用 因为max_execution_time在 php-cgi(php-fpm) 中,该参数不会起效. 真正能够控 ... 
- BZOJ1001 [BeiJing2006]狼抓兔子 最小割 对偶图 最短路
			原文链接http://www.cnblogs.com/zhouzhendong/p/8686871.html 题目传送门 - BZOJ1001 题意 长成上面那样的网格图求最小割. $n,m\leq ... 
- 3186Treats for the Cows(区间dp)
			题意:给一个数组v,每次可以取前面的或者后面的,第k次取的v[i]价值为v[i]*k,问总价值最大是多少. 区间dp. 区间dp可以不枚举len 直接枚举i和j即可 见代码 #include &l ... 
- 008 在大数据中,关于native包的编译步骤
			一.问题的由来: 二.解决问题的方法(所有的操作在root下完成): 1.前期需要的环境,下面的已经在伪分布式中配置好,不再重复 配置好jdk 配置好hadoop 2.上传还需要包 apache-ma ... 
- JavaWeb 之Ubuntu intelliJ 新建maven项目及配置tomcat
			一. 破解安装 intelliJ 下载网址:https://www.jetbrains.com/idea/ 破解激活:https://www.cnblogs.com/tanrong/p/7309343 ... 
