• Java 流(Stream)、文件(File)和IO


    Java 流(Stream)、文件(File)和IO

    Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

    Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

    一个流可以理解为一个数据的序列输入流表示从一个源读取数据输出流表示向一个目标写数据

    读取控制台输入

    Java 的控制台输入由 System.in 完成, System.in 代表 控制台输入

    为了获得控制台输入,可以创建一个字符流的输入流对象 InputStreamReader,该对象连接到 System.in控制台输入。

    然后创建一个字符流的缓冲区BufferedReader对象,该缓冲区连接到输入流,从输入流读取数据。

    InputStreamReader 是 字节流,按字节读取控制台内容,

    Reader类及其子类提供的字符流的读取char,inputStream及其子类提供字节流的读取byte;

    Writer类及其子类提供字符流的写入char,OutputStream及其子类提供字节流的写入byte。

    InputStream、OutputStream

    处理字节流的抽象类

    InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等.

    OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等.

    2.InputStreamReader  OutputStreamWriter

    处理字符流的抽象类

    InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.

    OutputStreamWriter是字符流通向字节流的桥梁,它将字符流转换为字节流

    .

    3.BufferedReader BufferedWriter

    BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行,

    从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

    BufferedWriter  由Writer 类扩展而来,提供通用的缓冲方式文本写入, newLine使用平台自己的行分隔符,

    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

    所以FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方式读取文件;

    InputStreamReader可以将字节流转换成字符流方式,是reader和stream之间的桥梁

    InputStream is = new InputStream(System.in);
    BufferedReader br = new BufferedReader(is);
    br.read(); -- 读取一个字符
    br.readLine(); --读取一行字符串

    BufferedReader 对象读取一个字符要使用 read() 方法,它的语法如下:

    int read( ) throws IOException

    每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException。

    // 使用 BufferedReader 在控制台读取字符
    import java.io.*;
    public class BRRead {
    public static void main(String args[]) throws IOException
    {
    char c;
    // 使用 System.in 创建 BufferedReader 
    BufferedReader br = new BufferedReader(new
    InputStreamReader(System.in));
    System.out.println("输入字符, 按下 'q' 键退出。");
    // 读取字符
    do {
    c = (char) br.read();
    System.out.println(c);
    } while(c != 'q');
    }
    }

     

  • 相关阅读:
    CORS详解
    JBoss 系列九十九:Rest WebService jBPM 6 集成演示样例
    atitit。浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结
    4G时代来临,运营商为谁搭台献唱?
    Pascal's Triangle II
    cocos2d-x 3.6版连连看载入资源
    SlidingMenu导入编译用法--Eclipse和IDEA
    【解决】hive动态添加partitions不能超过100的问题
    AngularJS clone directive 指令复制
    AndroidStudio文件夹结构视图讲解
  • 原文地址:https://www.cnblogs.com/ly01/p/8671310.html
Copyright © 2020-2023  润新知