目录
- 字符输入流Reader抽象类的实现类InputStreamReader的子类FileReader
- 字符输出流Writer抽象类的实现类OutputStreamWriter的子类Filewriter类
- 写数据的其他方法
- 字符流的续写和换行:操作类似于FileOutputStream
- IO异常的处理
- JDK7,JDK9流异常处理的新特性
- 使用Properties集合存储数据
- Properties集合中的方法store
- Properties集合中的方法load
- 缓冲流的原理
- BufferedOutputStream自己缓冲输出流
- 字节缓冲输出流
- 字符缓冲输出流BufferedWriter,在绑定的文件夹写这是输出
- 字符缓冲输入流BufferedReader,当前文件夹读
- 文本内容排序的实现
字符输入流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();
}
}