java-字符输入流FileReader输出流FileWriter,properties集合,缓冲流

字符输入流Reader抽象类的实现类InputStreamReader的子类FileReader

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
读取单个的字符

import java.io.FileReader;
import java.io.IOException;


public class t1 {
    public static void main(String[] args) throws IOException {
        FileReader fileReader = new FileReader("1.txt");
        int len = 0;
        while ((len=fileReader.read())!=-1){
            System.out.println((char)len);
        }
        fileReader.close();
    }
}

用缓冲读取多个字节
在这里插入图片描述
在这里插入图片描述

import java.io.FileReader;
import java.io.IOException;


public class t1 {
    public static void main(String[] args) throws IOException {
        FileReader fileReader = new FileReader("1.txt");
        char[] chars = new char[1024];//缓存
        int len = 0;//记录个数
        while ((len=fileReader.read(chars))!=-1){
            System.out.println(new String(chars,0,len));
            System.out.println(fileReader.read(chars));
        }
    }
}

字符输出流Writer抽象类的实现类OutputStreamWriter的子类Filewriter类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import java.io.FileWriter;
import java.io.IOException;

public class t1 {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter = new FileWriter("2.txt");
        fileWriter.write(97);
        //3.刷新
        fileWriter.flush();
        //4.释放
        fileWriter.close();
    }
}

写数据的其他方法

在这里插入图片描述

import java.io.FileWriter;
import java.io.IOException;


public class t1 {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter = new FileWriter("2.txt");
        char[] chars = {'a','b','c','d','e'};
        fileWriter.write(chars);
        fileWriter.close();
    }

}

import java.io.FileWriter;
import java.io.IOException;


public class t1 {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter = new FileWriter("3.txt");
        char[] chars = {'a','b','c','d','e'};
        fileWriter.write(chars,1,3);//bcd
        fileWriter.close();
    }

}
import java.io.FileWriter;
import java.io.IOException;


public class t1 {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter = new FileWriter("3.txt");
        fileWriter.write("宇哥");

        fileWriter.write("范冰冰",0,2);

        fileWriter.close();
    }

}

字符流的续写和换行:操作类似于FileOutputStream

在这里插入图片描述

import java.io.FileWriter;
import java.io.IOException;


public class t1 {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter = new FileWriter("3.txt",true);
        for (int i = 0; i < 10; i++) {
            fileWriter.write("helloWorld"+i);
        }
        fileWriter.close();

    }

在这里插入图片描述

import java.io.FileWriter;
import java.io.IOException;


public class t1 {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter = new FileWriter("3.txt",true);
        for (int i = 0; i < 10; i++) {
            fileWriter.write("helloWorld"+i+"\r\n");//换行
        }
        fileWriter.close();

    }

}

IO异常的处理

在这里插入图片描述

import java.io.FileWriter;
import java.io.IOException;


public class t1 {
    public static void main(String[] args){
        //提供fileWriter的作用域
        FileWriter fileWriter=null;
        try {
            //可能会产生异常的代码
            fileWriter = new FileWriter("3.txt", true);
            for (int i = 0; i < 10; i++) {
                fileWriter.write("helloWorld"+i+"\r\n");}

        } catch (IOException e) {
            System.out.println(e);
        }finally {
           if (fileWriter!=null){
               try {

                   fileWriter.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
        }

    }

JDK7,JDK9流异常处理的新特性

类似于python的上下文管理
在这里插入图片描述
finally就不用写了,因为流对象就定义在try括号中,使用完毕后自动释放了

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;


public class t1 {
    public static void main(String[] args){
        try (FileInputStream fileInputStream= new FileInputStream("c:\\1.png");
            FileOutputStream fileOutputStream = new FileOutputStream("c:\\1.png");){

            int len = 0;
            while ((len=fileInputStream.read())!=1){
                fileOutputStream.write(len);
            }

        }catch (IOException e){
            System.out.println(e);
        }

    }

}

在这里插入图片描述

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;


public class t1 {
    public static void main(String[] args) throws FileNotFoundException {
        FileInputStream fileInputStream= new FileInputStream("c:\\1.png");
        FileOutputStream fileOutputStream = new FileOutputStream("c:\\1.png");

        try (fileInputStream;fileOutputStream){
            int len = 0;
            while ((len=fileInputStream.read())!=1){
                fileOutputStream.write(len);
            }

        }catch (IOException e){
            System.out.println(e);
        }

    }

}

使用Properties集合存储数据

在这里插入图片描述
在这里插入图片描述

import java.util.Properties;
import java.util.Set;

public class t1 {
    public static void main(String[] args){
        show01();


    }
    private static void show01() {
        //1.创建对象
        Properties properties = new Properties();
        //添加数据
        properties.setProperty("张丽艳","186");
        properties.setProperty("范冰冰","175");
        properties.setProperty("撒撒娇","145");

        Set<String> strings = properties.stringPropertyNames();
        //遍历string集合
        for (String string : strings) {
            String val = properties.getProperty(string);
            System.out.println("key:"+string+"="+val);
        }
    }

Properties集合中的方法store

在这里插入图片描述

import java.util.Properties;

public class t1 {
    public static void main(String[] args) throws IOException {
        show01();
        
    }

    private static void show01() throws IOException {
        //1.
        Properties properties = new Properties();
        properties.setProperty("地列吧","18");
        properties.setProperty("杨颖","16");
        properties.setProperty("赵丽颖","17");

        //2.
        FileWriter fileWriter = new FileWriter("1.txt");

        //3.
        properties.store(fileWriter,"save date");

        //4.
        fileWriter.close();
    }
}

返回结果
在这里插入图片描述

Properties集合中的方法load

在这里插入图片描述
在这里插入图片描述

import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;


public class t1 {
    public static void main(String[] args) throws IOException {
        show01();

    }

    private static void show01() throws IOException {
        //1.创建存储对象
        Properties properties = new Properties();
        //2.读取文件
        properties.load(new FileReader("1.txt"));
        //3.遍历集合
        Set<String> strings = properties.stringPropertyNames();
        for (String string : strings) {
            String val = properties.getProperty(string);
            System.out.println("key:"+string+":"+val);
        }
    }

}

缓冲流的原理

在这里插入图片描述

BufferedOutputStream自己缓冲输出流

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import java.io.*;

public class t1 {
    public static void main(String[] args) throws IOException {
        //1.
        FileOutputStream fileOutputStream = new FileOutputStream("1.txt");
        //2.创建缓冲流对象
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
        //3.
        bufferedOutputStream.write("我爱范冰冰".getBytes());
        bufferedOutputStream.flush();

        bufferedOutputStream.close();

    }
}

字节缓冲输出流

在这里插入图片描述
在这里插入图片描述
一次读一个字符

import java.io.*;

public class t1 {
    public static void main(String[] args) throws IOException {
        //1.
        FileInputStream fileInputStream = new FileInputStream("1.txt");
        //2.
        BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
        //3.
        int len = 0;
        while ((len=bufferedInputStream.read())!=-1){
            System.out.println(len);
        }
        bufferedInputStream.close();
    }
}

一次读多个字符

import java.io.*;

public class t1 {
    public static void main(String[] args) throws IOException {
        //1.
        FileInputStream fileInputStream = new FileInputStream("1.txt");
        //2.
        BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
        //3.缓冲区
        byte[] bytes = new byte[1024];
        int len = 0;//记录每次读取个数
        while ((len=bufferedInputStream.read(bytes))!=-1){
            System.out.println(new String(bytes,0,len));
        }


        bufferedInputStream.close();
    }

字符缓冲输出流BufferedWriter,在绑定的文件夹写这是输出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import java.io.*;

public class t1 {
    public static void main(String[] args) throws IOException {
        //1.
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("1.txt"));
        for (int i = 0; i < 10; i++) {
            bufferedWriter.write("范冰冰");
            bufferedWriter.newLine();

        }
        bufferedWriter.flush();
        bufferedWriter.close();
    }
}

字符缓冲输入流BufferedReader,当前文件夹读

在这里插入图片描述

import java.io.*;

public class t1 {
    public static void main(String[] args) throws IOException {
        //1.
        BufferedReader bufferedReader = new BufferedReader(new FileReader("1.txt"));
        //2.
        String line;
        while ((line = bufferedReader.readLine())!=null){
            System.out.println(line);
        }
    }
}

文本内容排序的实现

在这里插入图片描述

import java.io.*;
import java.util.HashMap;


public class t1 {
    public static void main(String[] args) throws IOException {
        HashMap<String, String> map = new HashMap<>();
        BufferedReader bufferedReader = new BufferedReader(new FileReader("1.txt"));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("1_out.txt"));
        String line;
        while ((line=bufferedReader.readLine())!=null){
            String[] arr = line.split("\\.");
            map.put(arr[0],arr[1]);
        }
        for (String key: map.keySet()) {
            String val = map.get(key);
            line = key+"."+val;
            bufferedWriter.write(line);
            bufferedWriter.newLine();
        }
        bufferedReader.close();
        bufferedWriter.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值