资讯专栏INFORMATION COLUMN

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

thekingisalwaysluc / 3443人阅读

摘要:使用字节流写入文件,如果没有关闭字节流操作,文件依然存在内容,说明字节流是操作文件本身的。字节流比字符流更好,使用更广泛。

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

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

[toc]

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

字符输出流:Writer

类定义如下:

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

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

字符输入流:Reader
 
public  abstract class Reader extends Object implements Readable,Closeable


 
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 = "
Hello 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();
    }
  }
} 

字节流和字符流的区别

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

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

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

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

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

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69158.html

相关文章

  • Java识点总结JavaIO-转换

    摘要:知识点总结转换流知识点总结是的子类,将一个字符流的输出对象变为字节流的输出对象。将字节输出流转为字符输出流字节流转为字符流苹果将字节输入流转为字符输入流内容是 Java知识点总结(JavaIO-转换流) @(Java知识点总结)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV82dQ?w=849&h=226); O...

    luckyyulin 评论0 收藏0
  • Java识点总结JavaIO-打印

    摘要:知识点总结打印流知识点总结打印流是输出信息最方便的类,主要包括字节打印流和字符打印流。可以打印任何数据类型,小数,整数,字符串等。格式化输出姓名年龄分数性别 Java知识点总结(JavaIO-打印流) @(Java知识点总结)[Java, JavaIO] [toc] 打印流是输出信息最方便的类,主要包括字节打印流(PrintStream)和字符打印流(PrintWriter)。 可...

    wenzi 评论0 收藏0
  • Java识点总结JavaIO- BufferedReader类 )

    摘要:知识点总结类知识点总结类用于从缓冲区中读取内容,所有的输入字节数据都将放在缓冲区中中定义的构造方法只能接收字符输入流的实例,所以必须使用字符输入流和字节输入流的转换类将字节输入流转变为字符流。 Java知识点总结(JavaIO- BufferedReader类) @(Java知识点总结)[Java, JavaIO] [toc] showImg(https://segmentfault....

    alanoddsoff 评论0 收藏0
  • Java识点总结JavaIO-字节

    摘要:知识点总结字节流知识点总结字节流在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,而当程序需要将一些数据保存起来时,就要使用输出流。字节流主要操作类型数据,以数组为准,主要操作类是类和类。 Java知识点总结(JavaIO-字节流) @(Java知识点总结)[Java, JavaIO] [toc] 字节流 在程序中所有的数据都是以流的方式进行传输或保...

    BigTomato 评论0 收藏0
  • Java识点总结JavaIO-合并类)

    摘要:知识点总结合并流类知识点总结合并流的主要功能是将两文件的内容合并成一个文件字节在多文件的应用场景下非常高效,因为是将多个流串联起来,形成一个流,便于操作 Java知识点总结(JavaIO- 合并流类 ) @(Java知识点总结)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV9a9X?w=853&h=164); 合...

    iliyaku 评论0 收藏0

发表评论

0条评论

thekingisalwaysluc

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<