博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java知识点总结(JavaIO-字符流)
阅读量:6316 次
发布时间:2019-06-22

本文共 2632 字,大约阅读时间需要 8 分钟。

Java知识点总结(JavaIO-字符流)

@(Java知识点总结)[Java, JavaIO]

[toc]

在程序中一个字符等于两个字节,那么 Java 提供了 Reader 和 Writer 两个专门操作字符流的类。

字符输出流:Writer

类定义如下:

public  abstract class Writer extends Object implements Appendable,Closeable,Flushable

Appendable 接口表示内容可以被追加,接收的参数是CharSequence,实际上 String 类就实现了此接口,所以可以直接通过此接口的方法向输出流中追加内容。

clipboard.png

clipboard.png

字符输入流:Reader

public  abstract class Reader extends Object implements Readable,Closeable

clipboard.png

clipboard.png

import  java.io.File;import  java.io.FileReader;import  java.io.FileWriter;import  java.io.IOException;import  java.io.Reader;import  java.io.Writer; public  class Demo04 {   // 输出文件内容  public static void test1() throws IOException {    File file = new File("E:" + File.separator + "test.txt");    Writer fw = new FileWriter(file);     String str = "Hello world!";    fw.write(str);    fw.close();   }   // 追加文件内容  public static void test2() throws IOException {    File file = new File("E:" + File.separator + "test.txt");    Writer fw = new FileWriter(file, true);     String str = "\r\nHello world!";    fw.write(str);    fw.close();   }   // 从文件中读取内容  public static void test3() throws IOException {    File file = new File("E:" + File.separator + "test.txt");     Reader fr = new FileReader(file);    char[] c = new char[(int) file.length()];    int len = fr.read(c); // 返回值是读取的字符数        fr.close();    System.out.println("内容是:"  + new String(c, 0, len));   }   // 使用循环方式读取内容  public static void test4() throws IOException {    File file = new File("E:" + File.separator + "test.txt");     Reader fr = new FileReader(file);    char[] c = new char[(int) file.length()];        int temp = 0;    int len = 0;    while((temp = fr.read()) != -1){      c[len] = (char)temp ;      len ++;    }        fr.close();    System.out.println("内容是:"  + new String(c,0,len));   }   // 强制性清空缓冲区  public static void test5() throws IOException {    File file = new File("E:" + File.separator + "test.txt");    Writer fw = new FileWriter(fil e);     String str = "Hello world!";    fw.write(str);        fw.flush();    //fw.close();   }   public static void main(String[] args) {    try {      /*test1();      test2();      test4();*/       test5();    } catch (IOException e) {      e.printStackTrace();    }  }}

字节流和字符流的区别

clipboard.png

字符流在操作时使用了缓冲区(内存),通过缓冲区再操作文件。

使用字节流写入文件,如果没有关闭字节流操作,文件依然存在内容,说明字节流是操作文件本身的。

使用字符流写入文件,如果没有关闭字符流操作,文件中没有任何内容,这是因为字符流使用了缓冲区,关闭字符流时会强制性的将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区的内容无法输出,所以文件中没有内容。

缓冲区:如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快。

在字符流操作中,所有的字符都是在内存中形成的,在输出前会将所有的内容暂时保存在内存之中,所以使用了缓冲区暂存数据。

字节流比字符流更好,使用更广泛 。

所有的文件在硬盘或传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,而字符是自由在内存中才会形成,所以在开发中,字节流使用较为广泛。

转载地址:http://wfuaa.baihongyu.com/

你可能感兴趣的文章
gradle学习(15)-任务
查看>>
leetcode Decode Ways
查看>>
case when then else end
查看>>
npm ERR! Unexpected end of JSON input while parsing near '...wrap":false,"director'
查看>>
CentOS 7 两步 安装并启动Apache
查看>>
linux shell下写监控网卡流量的脚本
查看>>
Python client for Redis 官翻文档2.10.1(一)
查看>>
SAP MM基础
查看>>
jQuery Mobile 动态加入的html,如何加上jqm自带的样式
查看>>
python中的datetime模块
查看>>
ubuntu 搭建svn服务器
查看>>
基于storm的实时数据处理方案
查看>>
PHP mysql_query() 函数
查看>>
10种阻碍程序员职业生涯发展的行为
查看>>
MySQL 触发器简单实例
查看>>
一本介绍C指针的书--指针是什么1.1
查看>>
File Formats in Big Data Platform
查看>>
request获得所有参数
查看>>
编程原则
查看>>
Hystrix降级逻辑中如何获取触发的异常
查看>>