欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

10 IO流之——深入了解字符流

程序员文章站 2022-04-30 20:37:02
...

一  编码表

10 IO流之——深入了解字符流

二 转换流(把字节流转换为字符流)

字符流=字节流+编码表

OutputStreamWriter 字符输出流
    public OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流
    public OutputStreamWriter(OutputStream out,String charsetName)根据指定编码把字节流数据转换为字符流
 InputStreamReader 字符输入流
    public InputStreamReader(InputStream in) 用默认的编码读取数据
    public InputStreamReader(InputStream in,String charsetName)用指定的编码读取数据

package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 *public OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流
 *public OutputStreamWriter(OutputStream out,String charsetName)根据指定编码把字节流数据转换为字符流
 *
 *public InputStreamReader(InputStream in) 用默认的编码读取数据
 *public InputStreamReader(InputStream in,String charsetName)用指定的编码读取数据
 */
public class IoDemo10 {
	public static void main(String[] args) throws IOException {
// 		System.out.println("写数据——————————————————————————————————");
		//创建对象默认字符
//		OutputStreamWriter osw = new OutputStreamWriter( new FileOutputStream("a.txt"));
		//创建对象指定字符集
// 		OutputStreamWriter osw = new OutputStreamWriter( new FileOutputStream("a.txt"),"UTF-8");
 		//写数据
//		osw.write("中国");
		System.out.println("读取数据——————————————————————————————————");
		
		//创建对象默认字符
		InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"utf-8");
		int by = 0;
		while((by=isr.read())!=-1){
			System.out.print((char)by);
			
		}
		//释放资源
//      	osw.close();
		isr.close();
	}
}
注意:保证写数据和写数据的编码一致

OutputStreamWriter字符转换流写数据的5种方法
  public void write(int c) 写一个字符
  public void write(char[] cbuf) 写一个字符数组
  public void write(char[] cbuf,intoff,intlen) 写一个字符数组一部分
  public void write(String str)写一个字符串
  public void write(String str,intoff,intlen)写一个字符串的一部分

OutputStreamWriter字符转换流读数据的2种方法
 public int read()
 public int read(char[] cbuf)

转换流提供了对应的子类
FileWriter
FileReader

三 高效流

字符流为了高效读写,也提供了对应的字符缓冲流

   BufferedWriter   字符缓冲输出流

   BufferedReader   字符缓冲输入流

package Stream;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 字符流为了高效读写,也提供了对应的字符缓冲流
    BufferedWriter   字符缓冲输出流
    BufferedReader   字符缓冲输入流
 */
public class TestDemo02 {
	public static void main(String[] args) throws IOException  {
		/*//创建字符缓冲输出流
		BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));
		//写数据
		bw.write("hello");
		bw.write("world");
		bw.write("java");
        //释放资源
		bw.close();*/
		//创建字符缓冲输入流
		BufferedReader br = new BufferedReader(new FileReader("bw.txt"));
		//读数据
        char[] ch = new char[1024];
        int len = 0;
        while((len=br.read(ch))!=-1){
    	   System.out.print(new String(ch,0,len));
        }
        //释放资源
        br.close();
	
	}
}

字符缓冲流的特殊功能

字节缓冲流的特殊方法
   BufferedWriter
        public void newLine() 根据系统来决定换行符
   BufferedReader
        public String readLine() 一次读取一行数据

package Stream;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

/**
 * 字节缓冲流的特殊方法
 * BufferedWriter
 * public void newLine() 根据系统来决定换行符
 * BufferedReader
 * public String readLine() 一次读取一行数据

 */
public class TestDemo09 {
	public static void main(String[] args) throws IOException  {
		Writer();
		Reader();
		
	}
	public static void Reader() throws IOException {
		BufferedReader br = new BufferedReader(new FileReader("zxx.txt"));
        String line = null;
        while((line= br.readLine())!=null){
        	System.out.println(line);
        }
        br.close();
		
	}
	public static void Writer() throws IOException {
		BufferedWriter bw = new BufferedWriter(new FileWriter("zxx.txt"));	
		for(int i =0;i<=10;i++){	
		bw.write("hello"+i);
		bw.newLine();
		}
	    bw.close();
		
	}
}



相关标签: 字符流