Java 基础 IO流

文章转载自http://wentao365.iteye.com/blog/1374731


字节流和字符流区别?

种类 基本单位 处理类型 使用缓冲区 输入类 输出类
字节流 字节(8bit) 所有类型 未使用 InputStream OutputStream
字符流 字符(16bit) 文本类型 使用(buffer) Reader Writer

方法一:字节流

import java.io.*;
public class StreamTest1 {
    public static void main(String[] args) {

        File file = new File("G:\\github\\TestJava\\data3.txt");
        try {
            InputStream fileInputStream = null;
            fileInputStream = new FileInputStream(file);
            int i = 0;
            while ((i = fileInputStream.read()) != -1) {
                System.out.print((char) i + "");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

编程思路:

FileInputStream.read()返回当前字节文件对应的整数,或者文件读取到末尾返回-1

本地文件:用editPlus编辑文本文件如下,并保存为utf-8


结果:


缺点:不能处理中文,每个字节都需要读写硬盘


方法二:字符流

package demo;
import java.io.*;

class StreamTest{
    public static void main (String[] args)throws IOException{


        FileInputStream inputStream  = new FileInputStream(new File("G:\\github\\TestJava\\data.txt")); 
        InputStreamReader inputStreamReader=new InputStreamReader(inputStream,"GBK");
        BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
        
        String line;
        StringBuilder sb=new StringBuilder();
        while((line=bufferedReader.readLine())!=null){
            sb.append(line);
        }
        System.out.println(sb);
    }
}

编程思路:主要三个方法

FileInputStream() 从本地文件新建输入流
InputStreamReader() 将输入流读取成字符流
BufferedReader() 加缓存,append()追加字符串

本地文件:在G:\github\TestJava下新建data.txt,并保存如下内容(默认编码方式GBK,也可以save as 为 utf-8):



结果:



优点:使用缓存,可以处理中文
缺点:没有实现换行

方法三:用commons-io-*.jar

import java.lang.*;
import org.apache.commons.io.FileUtils;
import java.io.*;

class StreamTest{
    public static void main(String[] args)throws IOException {
        File file = new File("G:\\github\\TestJava\\data.txt");
        String str=FileUtils.readFileToString(file,"GBK");
        System.out.println(str);
    }
}

结果:



结论:还是高科技好用。

你可能感兴趣的:(Java 基础 IO流)