zoukankan      html  css  js  c++  java
  • 字符流和字节流(FileReader类和FileWriter类)

    字符流主要用于支持Unicode的文字内容,绝大多数在字节流中所提供的类,都可在此找到对应的类。其中,输入流Reader抽象类帮助用户在Unicode流内获得字符数据,而Writer类则实现了输出。可以利用Reader类是所有字符输入流的父类,而Writer类所有字符输出流的的父类。
    Reader类和Writer类
    以Reader和Writer为基础派生的一系列类。Reader和Writer都是抽像类。只提供了一系列用于字符流处理的接口。
    FileReader类和FileWriter类。
    前面的FileInputStream使用字节读取文件,字节流不能直接操作Unicode字符,所以java提供了字符流。
    1.FileReader类
    FileReader类于读取文件,每次读取文件中的第一个未读取过的字符,并以ASCII码或UTF-8码的形式输入到程序中。语法格式如下:

    FileReader fr=new FileReader(filename)
    其中文件名必须是文件完整的路径和文件名,如果程序和该文件保存在同一目录下,则可以只用文件名而不需要其路径,FileReader类中的read()方法用来读取字符并返回一个相应的int类型数据。当读到文件的结尾处时,则返回值-1,在完成文件数据的读取后需要使用close()方法关闭打开的文件。

    代码如下:

    import java.io.*;
    public class FileReadDemo {
    public static void main(String []args)throws IOException{
    //创建一个FileRead类型的对象
    FileReader fr=new FileReader("student.txt");
    int a=fr.read();//从文件中读取字符并存入a中
    while(a!=-1){//判断文件内容是否结束

    System.out.print((char)a);//输出读取的字符到控制台
    a=fr.read();//读取下一个字符
    }
    fr.close();//关闭文件 阅读器


    }

    }

    在这个程序中构建一个文件阅读器FileReader的对象实例fr,通过while循环语句调用其read方法依次读取字符,并判断是否到了文件结束出。如果没有到文件结尾,则将读取的整数强制转换为char类型,并输出到控制台中,在程序最后,要关闭流。在声明main()方法时,添加了throwsIOException用来处理输出和输入文件时发生的异常。当然,也可以使用try和catch语句来处理异常。但是如果不需要异常的具体处理方法,则可以只用throws关键字。

    2:FileWriter类

    FileWriter类用于将数据写入文件语法格式如下:

    FileWriter fr=new FileWriter(filename);

    其中,文件名必须是文件的完整路径和文件名,如果程序和该文件保存在同一目录下,则可以只用文件名而不需要其他路径。如果该文件名不存在,则系统会自动创建该文件。FileWriter类中的write()方法可以将文字或字符串写入文件中。当完成数据写入操作后,使用close()方法关闭文件。示例代码如下:

    import java.io.*;
    public class FileWriter {
    public static void main(String []args) throws IOException{
    //创建一个FileWriter类型的对象
    FileWriter fw=new FileWriter();
    fw.write("thisismy");//像文件中写入字符串
    fw.write("stu");
    fw.write("dent");
    fw.write(".");//向文件中写入字符
    fw.write("txt");
    fw.write("这个是我的文件。");
    fe.close();

    }


    }

    }

    在这个程序中,构建了一个写入器FileWriter对象实例fw,调用其write()方法向文本文件student.txt中写入各种文本。在这个程序中,没有代码捕获异常,而是在main()方法头部使用throws关键字抛出IOException异常,将异常交给虚拟机处理。

  • 相关阅读:
    CodeForces Round #556 Div.2
    #Leetcode# 650. 2 Keys Keyboard
    #Leetcode# 552. Student Attendance Record II
    #Leetcode# 551. Student Attendance Record I
    #Leetcode# 522. Longest Uncommon Subsequence II
    牛客OI周赛9-普及组
    最长回文子序列 (模板)
    C++ 各种排序算法总结
    THU 数据结构 真二叉树重构(Proper Rebuild)
    C++中结构体函数的实现
  • 原文地址:https://www.cnblogs.com/Angella/p/6080312.html
Copyright © 2011-2022 走看看