Java IO流--字节流


IO流概述

  IO流:输入输出流(Input/Output)

  流是一组有顺序、起点、终点的字节集合,是对数据传输的抽象

  流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观地进行数据操作

IO流的分类

  根据处理的数据类型分为:字符流、字节

  根据数据流向不同分为:输入流、输出流

字节输入流:OutputStream,此抽象类是所有输出字节流的超类

字节输入流:InputStream,此抽象类是所有输入字节流的超类

需要注意的是:

  (1)字节是数据传输的基本单位

  (2)字节也是文件存储的基本单位

  (3)从文件读取数据到程序使用“输入流”

  (4)从程序把数据写入文件使用“输出流”

代码示例:

package com.seven.javaSE;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FIleStreamDemo {
    public static void main(String[] args) {
        out();
        in();
    }
    
    //定义文件输出流,向文件中写入数据
    public static void out() {
        File file = new File("C:\\TestFile\\hello.txt");
        try {
            /*
             * FileOutputStream(File file)
             * FileOutputStream(File file,Boolean append) 当append==True时,写入的内容追加在文件中
             */
            OutputStream out = new FileOutputStream(file,true);
            String content = "藤原豆腐渣渣,好好学Java。";
            out.write(content.getBytes());
            out.close();
            System.out.println("内容写入文件成功");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    //定义文件输出流,从文件读取数据
    public static void in() {
        /*
         * 在Unicode字符编码下,一个中文字符占2个字节
         * 所以下面定义的字节数组content的长度若是单数,如:1、3等
         * 后面将字节数组内容转换成字符时会出现乱码,故一般将长度设为双数
         * 还应注意的是,sb.append(new String(content))是将整个字节数组的内容都转成字符,
         * 但是有些时候,存放至字节数组的内容没有超过数组长度,这个时候就出现内容冗余的情况
         * 所以加入代码sb.append(new String(content)),每次读多少追加多少
         */
        byte [] content = new byte[1024];
        File f = new File("C:/TestFile/hello.txt");
        int len = -1;
        StringBuffer sb = new StringBuffer();
        try {
            InputStream in = new FileInputStream(f);
            while((len=in.read(content))!=-1) {
                sb.append(new String(content,0,len));
            }
       in.close(); System.out.println(sb); }
catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

相关