• java的IO流之字符流


    # 原创,转载请留言联系

    • 输出流

    FileWriter类

    常见的构造方法:

    FileWriter(String fileName)     根据给定的文件名构造一个 FileWriter 对象。
    FileWriter(String fileName, boolean append)       根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。

    String fileName代表的是文件的路径,如果没有这个文件,会自动创建。

    常见的方法:

    1.write

    void write(String str):写一个字符串数据
    void write(String str,int index,int len):写一个字符串中的一部分数据
    void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97
    void write(char[] chs):写一个字符数组数据
    void write(char[] chs,int index,int len):写一个字符数组的一部分数据

    2.close

    object.close()   关闭文件,释放资源

    3.flush

    object.flush()  刷新缓冲区。流对象还可以继续使用。

    注意其和close()的区别,close是先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。

    所以说close在释放资源前会刷新一次缓冲区。

    • 输入流

    FileReader类

    常见的构造方法:

    FIleReader(String FileName)    在给定从中读取数据的文件名的情况下创建一个新 FileReader。

    常见的方法:

    1.read()

    read()方法    一次只读一个字符,返回的是对应的编码值,int类型。

    示例:

    public class FileReaderDemo {
        public static void main(String[] args) throws IOException {
            FileReader fr = new FileReader("/home/chichung/桌面/test");
            int ch = fr.read();
            System.out.println(ch);
            System.out.println((char)ch);
            fr.close()
        }

    注意,当没有数据可以读时,返回值是int -1。可以根据这个结束条件写一个循环把所有数据读出来。

    public class FileReaderDemo {
        public static void main(String[] args) throws IOException {
            FileReader fr = new FileReader("/home/chichung/桌面/test");
            int ch;
            while ((ch=fr.read()) != -1){
                System.out.print((char)ch);
            }
            fr.close();  // 记得释放资源
        }
    }

    2.read(char[] cbuf)

    当文件很大时,一个一个字符去读取效率太低了。所以一般是多个字符一起读取。read方法可以接收一个字符数组。一般数组的长度定义为1024或整数倍,视内存而定。

    示例:

    public class FileReaderDemo2 {
        public static void main(String[] args) throws IOException {
            char[] arr = new char[3];  // 这里只是实验才用的3,具体情况视内存而定
            FileReader fr = new FileReader("/home/chichung/桌面/test");
            int len;
            // len=fr.read(arr) len是实际读到的长度(int),不是数组的长度!
            // 当没有新内容可读时,返回值是int -1
            while ((len= fr.read(arr)) != -1){  
                System.out.print(new String(arr,0,len));  // String构造方法直接把字符数组转换为字符串
            }
            fr.close();
        }
    }

    说了这么多,其实上面两个都用得不多(滑稽.jpg)

    用得比较多是BufferedWriter和BufferReader类。

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    • BufferedWriter类

    将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。
    可以指定缓冲区大小,或者可以接受默认大小。 默认值足够大,可用于大多数用途。

    常用构造方法:

    BufferedWriter(Writer out)    创建使用默认大小的输出缓冲区的缓冲字符输出流。

    示例:

    BufferedWriter bw = new BufferedWriter(new FileWriter("/home/chichung/桌面/test.txt));

    常用方法:

    FileWriter的方法都有。

    比较特别的是,BufferedWriter类有newLine()方法。

    这个方法十分有用。它是写入一个换行符。

    windows的换行符是 ,linux的换行符是 ,mac的换行符是 。

    newLine()方法可以根据不同的系统,写入合适的换行符!

     

    • BufferedReader类

    从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。
    可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。

    常见的构造方法:

    BufferedReader(Reader in)     创建使用默认大小的输入缓冲区的缓冲字符输入流。

    示例:

    BufferedReader br = new BufferedReader(new FileReader("/home/chichung/桌面/test"));

    常见的方法:

    FileReader的方法都有。

    比较特别的是,BufferedReader类有readLine()方法。

    readLine()方法是一次读一行。需要注意的是,与read()不同,当没有东西可读的是,readLine()返回的是null,read()返回的是-1。

  • 相关阅读:
    chromedriver版本对应支持的Chrome版本
    post请求,直接在地址后加请求参数,并将请求参数 url加密
    Requests 请求-重定向Location
    requests 进行https请求,一直报SSL 报错,以及 移除SSL认证后的InsecureRequestWarning警告解决
    fiddler 设置,只过滤固定域名的网址
    python requests库,请求返回 中文乱码问题的解决
    python post请求,application/x-www-form-urlencoded格式,提交数据key、val均需URL转码
    python post请求,text/xml 格式
    那些年找工作入过的坑! 避雷!!!!
    构建前端gulp自动化
  • 原文地址:https://www.cnblogs.com/chichung/p/10196848.html
Copyright © 2020-2023  润新知