0
点赞
收藏
分享

微信扫一扫

Java进阶核⼼之Reader、Writer字符流

年夜雪 2022-04-13 阅读 64
java

一,java字符输入流Reader讲解

:讲解Reader相关介绍及其⼦子类
Reader是输⼊入字符流的⽗父类,它是⼀一个抽象类, 部分库不不推荐使⽤用Reader/Writer,所以简单了了解
即可

 

package chapter12;

import java.io.*;

public class ReaderTest {
    public static void main(String [] args) throws Exception {
        test2();

    }
    public static void test1()throws Exception{
        String dir="C:\\Users\\联想\\Desktop\\test\\1.txt";
        File file=new File(dir);
        Reader input = new FileReader(file);
        int ch;
        while((ch=input.read())!=-1){
            System.out.print((char)ch);
        }
        input.close();


    }
    public static void test2()throws Exception{
        String dir="C:\\Users\\联想\\Desktop\\test\\1.txt";
        File file=new File(dir);
        Reader input = new FileReader(file);
        int ch;
        char [] buf= new char[1024];
        while((ch=input.read(buf))!=-1){
            System.out.print(new String(buf,0,ch));
        }
        input.close();


    }
}

二,java字符输出流Writer讲解

 :讲解Writer相关介绍及其⼦子类
Writer是输出字符流的⽗父类,它是⼀一个抽象类

实战

package chapter12;

import javax.imageio.IIOException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class WriterTest {
    public static void main(String [] args)throws Exception {
        test2();
    }

    public static void test2()throws Exception {
        String dir="C:\\Users\\联想\\Desktop\\test\\2.txt";
        Writer writer = new FileWriter(dir,true);
        writer.write(23567);
        writer.write(28404);
        writer.write(35838);
        writer.write(22530);
        writer.write("23567");
        writer.flush();
        writer.close();

    }
    public static void test1()throws Exception {
        String dir="C:\\Users\\联想\\Desktop\\test\\2.txt";
        Writer writer = new FileWriter(dir);
        writer.write(23567);
        writer.write(28404);
        writer.write(35838);
        writer.write(22530);
        writer.write("23567");
        writer.flush();
        writer.close();

    }
}

 三,Buffered Reader字符输⼊入缓冲流实战

 

package chapter12;

import java.io.BufferedReader;
import java.io.FileReader;

public class BufferReaderTest  {
    public static void main(String [] args)throws Exception{
        test1("C:\\Users\\联想\\Desktop\\test\\1.txt");
    }
    public static void test2(String path)throws Exception{
        BufferedReader reader= new BufferedReader(new FileReader(path));
        if(!reader.ready()){
            System.out.println("文件流暂时无法读取");
            return;
        }
        String str="";
        while((str=reader.readLine())!=null){
            System.out.println(str);
        }
    }
    public static void test1(String path)throws Exception{
        BufferedReader reader= new BufferedReader(new FileReader(path));
        if(!reader.ready()){
            System.out.println("文件流暂时无法读取");
            return;
        }
        int size;
        char [] cbuf=new char[1024];
        while((size=reader.read(cbuf,0,cbuf.length))!=-1){
            System.out.println(new String(cbuf,0,size));
        }
    }
}

 四,BufferedWriter字符输出缓冲流实战

实战

package chapter12;

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

public class BufferWriterTest {
    public static void main(String [] args)throws Exception{
        test1("C:\\Users\\联想\\Desktop\\test\\8.txt");
    }
    public static void test1(String path)throws Exception{
        BufferedWriter writer=new BufferedWriter(new FileWriter(path));
        char ch='小';
        writer.write(ch);
        String other= "小弟课堂";
        //写入一个字符数组
        writer.write(other.toCharArray(),0,other.length());
        writer.newLine();
        String newLine="学习java课程";
        writer.write(newLine);
        writer.close();


    }
}

五,字符流和字节流的桥梁梁InputStreamReader

 

package chapter12;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

public class InputStreamReaderTest {
    public static void main(String [] args)throws Exception{
        test1("C:\\Users\\联想\\Desktop\\test\\8.txt");
    }
    public static void test1(String path)throws Exception{
        //读取字节流
        InputStream in = new FileInputStream(path);
//        InputStreamReader isr = new InputStreamReader(in,"GBK");
        InputStreamReader isr = new InputStreamReader(in);

        BufferedReader reader = new BufferedReader(isr);
//        String line;
//        while((line=reader.readLine())!=null){
//            System.out.println(line);
//        }
//        isr.close();
//        reader.close();
        int size;
        char [] ch=new char[1024];
        while((size=reader.read(ch,0,ch.length))!=-1){
            System.out.println(new String(ch,0,size));
        }
        isr.close();
        reader.close();
    }
}

 六,字符流和字节流的桥梁梁OutputStreamWriter

package chapter12;

import java.io.*;

public class OutputStreamWriterTest {
    public static void main(String [] args)throws Exception{
        test1("C:\\Users\\联想\\Desktop\\test\\8.txt");
        test2("C:\\Users\\联想\\Desktop\\test\\8.txt");
    }
    public static void test1(String path)throws Exception{
        OutputStream out=new FileOutputStream(path);
        OutputStreamWriter osr= new OutputStreamWriter(out,"GBK");
        BufferedWriter bufw=new BufferedWriter(osr);
        String srt="环保一百个啊说的话覅偶怕蓄电dsaf" ;
        bufw.write(srt);
        bufw.newLine();
        bufw.write("学习java课程");
        bufw.flush();
        bufw.close();

    }
    public static void test2(String path)throws Exception{
        InputStream inputStream= new FileInputStream(path);
        InputStreamReader isr=new InputStreamReader(inputStream,"GBK");
        BufferedReader bufr=new BufferedReader(isr);
        String line;
        while((line=bufr.readLine())!=null){
            System.out.println(line);
        }
        isr.close();
        bufr.close();
    }
}

 七,JavaIO流内部异常处理理

写法⼀一(以前内容)

 写法⼆二(JDK6之前,⼤大部分⼈人还停留留这个写法)

package chapter12;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class TryCatchTest {
    public static void main(String [] args){
        BufferedInputStream bis=null;
        BufferedOutputStream bos=null;
        try{
            FileInputStream fis=new FileInputStream("C:\\Users\\联想\\Desktop\\test\\1.txt");
            bis=new BufferedInputStream(fis);
            FileOutputStream fos=new FileOutputStream("C:\\Users\\联想\\Desktop\\test\\111.txt");
            bos=new BufferedOutputStream(fos);
            int size;
            byte [] buf=new byte[1024];
            while((size=bis.read(buf))!=0){
                bos.write(buf,0,size);
            }

        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if( bis!=null){
                try{
                    bis.close();
                }catch(Exception e){
                    e.printStackTrace();
                }finally{
                    if(bos!=null){
                        try{
                            bos.close();
                        }catch(Exception e){
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
}

八,新版JDK try-with-resource处理理IO异常

public static void test4() {
try (FileInputStream fis = new FileInputStream("xdclass.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("copy.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
) {
int size;
byte[] buf = new byte[1024];
while ((size = bis.read(buf)) != -1) {
bos.write(buf, 0, size);
}
} catch (Exception e) {
e.printStackTrace();
}
}

 

举报

相关推荐

0 条评论