zoukankan      html  css  js  c++  java
  • Java IO--字符流--BufferedReader和BufferedWriter

           从昨天开始没事情干时,决定梳理梳理Java IO流,因为觉得太混乱这个东西,妈的,咋就这么多类型,想累死谁啊,这里并不是埋怨创造者,而是气自己看着看着老跑偏,实在看不进去,太多了,想睡觉,所以现在决定每天学习一类,我倒是要看看要多久自己才能完成任务!

    字符流:啥是字符流呢?又和字节流有啥区别呢?(但是字符流说到底还是字节流,只是封装了一下下。)

    字符流  一个字符或多个字符(1个字符=2个字节,字符类型UniCode) 语言支持性比较好
    字节流  一个字节或对个字节(1字节=8bit) 对图片、音频支持性较好

    1 BufferedReader

    从流里面读取文本,通过缓存的方式提高效率,读取的信息包括字符、数组、行,缓存的大小可以指定也可以默认,一般默认就够用了。

    1.1构造函数

    •     BufferedReader(Reader in);创建一个默认大小输入缓冲区的缓冲字符流。
    •     BufferedReader(Reader in, int size);创建一个使用指定大小输入缓冲区的缓冲字符输入流。

    1,2初始化 

    BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    第一个方法是从文件中读取,第二个是标准输入(控制台)读取。

    1.3 三种读取方法

    • read()读取一个字符,返回读取字符的ascII码,当读取到最末尾时,返回-1 。
    • read(char[] cbuf, int off, int len);将读取的字符缓存到char数组里,off开始缓存的数组下标,len要读取的最大字符,返回读取的字符数量,末尾时返回-1 。
    • readLine()读取一个文本行,返回String包含该行内容的字符串。

        1.3.1 read()代码

    public static void bufferedReaderAndWriterTest() throws IOException{
    		BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
    		int res = 0;
    		while((res = br.read()) != -1){
    			System.out.print((char) res);
    		}
    		br.close();
    	}

    运行结果:

        1.3.2 read(char[] cbuf, int off, int len)代码

    public static void bufferedReaderAndWriterTest() throws IOException{
    		BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
    		char[] cbuf = new char[5];
    		int num = br.read(cbuf, 0, 5);
    		System.out.println("读取了" + num + "个字符");
    		for(int i = 0; i < num; i++){
    			System.out.print(cbuf[i]);
    		}
    		br.close();
    	}

    运行结果:

        1.3.3 readLine()代码

    public static void bufferedReaderAndWriterTest() throws IOException{
    		BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
    		String str = br.readLine();
    		System.out.println(str);
    		br.close();
    	}

    运行结果:

    1.4 其他方法

        ready()判断输入流是否准备好被读取

    2 BufferedWriter

    2.1 构造方法

    • BufferWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输出流。
    • BufferedWriter(Writer our, int size) 创建一个使用指定大小输出缓冲区的缓冲字符输出流。

    2.2 初始化

    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));

    输出到标准输出(控制台)或者一个文本文件。

    2.3 三种输出方法

    • write(char[] cbuf, int off, int len)写入字符数组的一部分,off开始写入的数组下标,len长度,无返回。
    • write(int c) 写入单个字符, 无返回。
    • write(String s, int off, int len) 写入字符串的一部分, 无返回。

    2.3.1 write(char[] cbuf, int off, int len)代码

    public static void bufferedReaderAndWriterTest() throws IOException{
    		BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
    		char[] cbuf = new char[]{'好','好', '学', '习','!'};
    		bw.write(cbuf, 0, 3);
    		bw.flush();
    		bw.close();
      }

    运行结果:

    2.3.2 write(int c)代码

    public static void bufferedReaderAndWriterTest() throws IOException{
    		BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
    		bw.write(98);
    		bw.flush();
    		bw.close();
      }

    运行结果:

    2.3.3write(String s, int off, int len)代码

    public static void bufferedReaderAndWriterTest() throws IOException{
    		BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
    		bw.write("大傻叉龟儿子", 1, 5);
    		bw.flush();
    		bw.close();
      }

    运行结果:

    2.4 其他方法

        newLine()写入一个行分隔符

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

    end

    终于写完了,明天继续!

  • 相关阅读:
    Windows access Linux / Ubuntu via Remote Desktop via xrdp
    Difference between model.evaluate vs model.predict in Keras
    Ubuntu pydot failed to call GraphViz.Please install GraphViz 解决方法
    体验godaddy域名转入,添加A记录,及使用dnspod的NS
    安装SQL Server 2008,一直要求重启电脑的解决办法
    在线网站探测工具-阿里测
    iis日志分析软件及大文本切割软件下载
    C# web服务器被webbench攻击及目现采用的防御措施
    C# iframe session 丢失
    C# CashCode项目开发
  • 原文地址:https://www.cnblogs.com/teiba/p/8996504.html
Copyright © 2011-2022 走看看