Java输入输出流

    技术2022-07-10  154

    Java输入输出流

    输入流、输出流FIS,FOSBIS and BOSDIS and DOS字符流

    输入流、输出流

    输入流:从其他地方如:键盘,文件等输入到程序中; 程序从输入流中读取信息。 输出流:从程序输出到 如文件,显示器等的数据流。 程序向其他位置写信息。

    按照最小的数据单位可分为: 字节流:其父类为InputStream,OutputStream; 字符流:其父类为Reader,Writer。 Java中一个字符为两个字节。对与非字符数据,必须用字节流。

    节点流: 直接操作特定的目标。为低级流。 处理流: 对已有的流进行处理,相当于电路中的变压器,水龙头的净水器。为程序提供更加强大的读写功能,为过滤流,高级流。

    FIS,FOS

    FileInputSream and FileOutputStram.文件输入流和文件输出流。 FIS(Read)

    int read(); //读取byte填充到int(32位)的第八位,没有时返回-1; int read(byte[] b); //从输入流中最多读取b.length()个字节到一个字节数组中,返回读取到字节个数; int read(byte[] b, int off, int len); //从输入流中最多读取len个字节到一个字节数组,off为偏移值。

    FOS(Write) 写入数据的输出流;

    void write(int b); //将指定字节的数据写入此文件输出流; void write(byte[] b); //将长度为b.length()个字节数据从指定字节数组写入到此文件输出流; void write(byte[] b, int off, int len); //将指定字节数组从偏移量开始的len个字节写入到此文件的输出流。

    BIS and BOS

    BufferedInputStream and BufferedOutputStream为带有缓冲的输入输出流。 每次调用时,都会经过缓存区,即读取或者写入时,先操作缓冲区,从而提高了效率。

    DIS and DOS

    DataInputstream and DataOutputStream 是对流功能的扩展,提供基本类型的输入,输出方法。 DIS常用方法:

    int readInt(); //读取四个字节并返回一个int值; double readDouble(); //读取八个字节,并返回一个double值。

    DOS常用方法:

    void writeInt(int); //将一个int值写入输出流; void writeDouble(double); //将一个double值写入输出流; void writeUTF();.....略。

    字符流

    1. ISR and OSW 一次处理一个字符。

    InputStreamReader(ISR): 读取,完成byte流解析为char流,按照编码解析; OutputStreamWriter(OSW): 写入,提供char流到byte流,按照编码处理。

    2. BR and BW 字符流过滤器,极大的方便的文本的读写操作。

    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream)); String str = null; while((str = br.read())!=null){//不识别换行 bw.write(str); bw.newLine();//换行 bw.flush; }

    访问控制台

    BufferedReader br = new BUfferedReader(new InoutStreamReader(System.in)); while(ture){ String str = br.readLine();//从控制台一次读一行 System.out.println(str); if("end".equals(str))break; }

    3. FR and FW

    FileReader fr = new FileReader(filename); FileWriter fw = new FileWriter("d:\\fw.txt"); int c; while((c = fr.read())!= -1){ fw.write(c); fw.flush; }
    Processed: 0.025, SQL: 9