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)—字符流的更多相关文章

  1. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

  2. JAVA IO 字节流与字符流

    文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节.     ...

  3. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public sta ...

  4. io系列之字符流

    java中io流系统庞大,知识点众多,作为小白通过五天的视频书籍学习后,总结了io系列的随笔,以便将来复习查看. 本篇为此系列随笔的第一篇:io系列之字符流. IO流 :对数据的传输流向进行操作,ja ...

  5. Java IO 字节流与字符流 (五)

    Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字 ...

  6. JAVA之IO流(字符流)

    字符流InputStreamReader和OutputStreamWriter是Writer和Read的子类:是字节流通向字符流的桥梁,也就是可以把字节流转化为字符流. InputStreamRead ...

  7. (19)IO流之字符流FileReader和FileWriter,缓冲字符流---缓冲输入字符流BufferedReader和缓冲输出字符流BufferedWriter

    字符流,读取的文件是字符的时候,有两个基类一个是Reader,一个是Writer这有点拟人的感觉,人直接看懂的是文字 字符流 字节流:读取的是文件中的二进制字节流并不会帮你转换成看的懂得字符 字符流: ...

  8. JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习

    JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了 ...

  9. 【JAVA IO流之字符流】

    一.概述. java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中.流按照操作数据不同分为两种,字节流和字符流.流按照流向分为输入流,输出流. 输入输出的“入”和“出”是相当于内存来 ...

  10. Java:IO流之字符流缓冲区详解

    字符流缓冲区: 1.缓冲区的出现提高了对数据的读写效率: 2.对应类:BufferedWriter.BufferedReader: 3.缓冲区要结合流才可以使用: 4.在流的基础上对流的功能进行了增强 ...

随机推荐

  1. JS获取地址栏的参数值

    function GetQueryString(name){ var reg = new RegExp("(^|&)"+ name +"=([^&]*)( ...

  2. 分布式配置 Spark 2.0版本 2.1版本 1.6版本

    apache的各个软件各个版本下载:  http://archive.apache.org/dist/ 1.下载spark. sudo tar -zxf ~/下载/spark-2.0.2-bin-wi ...

  3. css3实现旋转表

    如图所示: css部分: <style> #clock{width:100px; height:100px; border-radius:50%; border:4px solid bla ...

  4. php5.6安装redis各个版本地址集合

    igbinary扩展 http://windows.php.net/downloads/pecl/releases/igbinary/2.0.1/ redis扩展 http://windows.php ...

  5. POJ 2251 Dungeon Master (非三维bfs)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 55224   Accepted: 20493 ...

  6. Mex-hdu4747(DP)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4747 题目大意:给一个含有n个数的序列 ns[1~n],定义函数 mex(l,r)为区间 [l,r] 中未 ...

  7. Java实现简单记事本

    代码实现: import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; im ...

  8. HDU 1257 最少拦截系统 【贪心】

    <题目链接> 题目大意: 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度 ...

  9. 最长不下降子序列nlogn

    b[i]表示长度为i的最长不下降子序列的最小末尾元素的值显然它是单调递增的,满足二分性质,然后就可以愉快地二分啦. #include<iostream> #include<cstdi ...

  10. 聊聊微服务熔断降级Hystrix

    在现在的微服务使用的过程中,经常会遇到依赖的服务不可用,那么如果依赖的服务不可用的话,会导致把自己的服务也会拖死,那么就产生了熔断,熔断顾名思义就是当服务处于不可用的时候采取半开关的状态,达到一定数量 ...