文章目录
- 1. 字符流
- 1.1 为什么出现字符流
- 1.2 字符流写数据的5种方式
- 1.3 字符流读数据的两种方式
- 1.4 字符缓冲流
- 1.5 字符缓冲流特有功能
- 2. IO流小结
- 2.1 字节流
- 2.2 字符流
1. 字符流
1.1 为什么出现字符流
由于字节流操作中文时不是特别方便,因此Java提供了字符流。
1.2 字符流写数据的5种方式
方法名 | 说明 |
---|---|
void write(int c) | 写一个字符 |
void write(char[] cbuf) | 写入一个字符数组 |
void write(char[] cbuf, int off, int len) | 写入字符数组的一部分 |
void write(String str) | 写入一个字符串 |
void write(String str, int off, int len) | 写入一个字符串的一部分 |
import java.io.*;
public class Demo {public static void main(String[] args) throws IOException {OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("D:\\fos.txt"));osw.write(97); //int类型的osw.write(98);char[] chs1={'c','d'};osw.write(chs1);char[] chs2={'d','e','f','g'};osw.write(chs2,1,3);osw.write("ghijkl",1,5);osw.close();}
}
方法名 | 说明 |
---|---|
flush() | 刷新流,还可以继续写数据 |
close() | 先刷新流,再关闭流,释放资源,不可以继续写数据 |
1.3 字符流读数据的两种方式
方法名 | 说明 |
---|---|
int read() | 一次读一个字符数据 |
int read(char[] cbuf) | 一次读一个字符数组数据 |
import java.io.*;
public class Demo {public static void main(String[] args) throws IOException {InputStreamReader isr=new InputStreamReader(new FileInputStream("D:\\fos.txt"));//int ch;//while((ch=isr.read())!=-1){// System.out.print((char)ch);//}char[] chs=new char[1024];int len;while((len= isr.read(chs))!=-1){System.out.println(new String(chs,0,len));}isr.close();}
}
1.4 字符缓冲流
import java.io.*;
public class Demo {public static void main(String[] args) throws IOException {BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\fos.txt"));bw.write("hello\r\n");bw.write("world\r\n");bw.close();BufferedReader br=new BufferedReader(new FileReader("D:\\fos.txt"));//int ch;//while((ch=br.read())!=-1){// System.out.print((char)ch);//}char[] chs=new char[1024];int len;while((len= br.read(chs))!=-1){System.out.print(new String(chs,0,len));}br.close();}
}
1.5 字符缓冲流特有功能
1. BufferedWriter:void newLine()
:写一行行分隔符,行分隔符字符串由系统属性定义。
2. BufferedReader:public String readLine()
:读一行文字,如果流的末尾已经到达,则为null。
import java.io.*;
public class Demo {public static void main(String[] args) throws IOException {BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\fos.txt"));for(int i=0;i<10;i++){bw.write("hello"+i);bw.newLine();}bw.close();BufferedReader br=new BufferedReader(new FileReader("D:\\fos.txt"));String line;while((line= br.readLine())!=null){System.out.println(line);}br.close();}
}