字符流读取数据的两种方式
方法名 | 说明 |
---|---|
int read | 一次读一个字符数据 |
int read(char[] cbuf) | 一次读一个字符数组数据 |
package Demo1;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo1 {
public static void main(String[] args) throws IOException {
InputStreamReader isr =new InputStreamReader(new FileInputStream("fis.txt"));
//int read();一次读写一个数据
// int ch;
// while((ch=isr.read())!=-1){
// System.out.print((char)ch );
// isr.close();
//int read (char[] cbuf)一次读写一个字符数组
char[] chs = new char[1024];
int len ;
while((len=isr.read(chs))!=-1){
System.out.println(new String(chs,0,len));
isr.close();
}
}
}
字节流复制java文件
package Demo1;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo1 {
public static void main(String[] args) throws IOException {
InputStreamReader isr =new InputStreamReader(new FileInputStream("fis.txt"));
//int read();一次读写一个数据
// int ch;
// while((ch=isr.read())!=-1){
// System.out.print((char)ch );
// isr.close();
//int read (char[] cbuf)一次读写一个字符数组
char[] chs = new char[1024];
int len ;
while((len=isr.read(chs))!=-1){
System.out.println(new String(chs,0,len));
isr.close();
}
}
}
复制java改进版
- FileReader:用于读取文字的便捷类
FileReader(String fileName)
- FileWriter:用于写入字符的便捷类
FileWriter(String fileName)
package Demo1;
import java.io.*;
public class Demo1 {
public static void main(String[] args) throws IOException {
FileReader isr = new FileReader("cod.java");
FileWriter ism = new FileWriter("cod2.java");
int len;
char[] chs =new char[1024];
while((len=isr.read(chs))!=-1){
ism.write(chs,0,len);
}
isr.close();
ism.close();
}
}
字符缓冲流
- 字符缓冲流
BufferedWriter;将文本邪乎字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,课以指定缓冲区大小,或者可以接收默认区大小,默认值足够大,可以用作大多数用途
BufferedReader;从字符输入流中读取文本,缓冲字符,以提供字符,数组的高效读取,可以指定缓冲区大小,或者可以接收默认区大小,默认值足够大,可以用作大多数用途
- 构造方法
- BufferedWriter(Writer out)
- BufferedReader(Reader in)
package Demo1;
import java.io.*;
public class Demo1 {
public static void main(String[] args) throws IOException {
FileReader isr = new FileReader("cod.java");
BufferedReader isr1 = new BufferedReader(isr);
FileWriter ism = new FileWriter("cod5.java");
BufferedWriter ism1 = new BufferedWriter(ism);
//一次一个祝福数组数据
// int len;
// char[] chs =new char[1024];
// while((len=isr1.read(chs))!=-1){
// ism.write(chs,0,len);
// }
//一次一个字符数据
int ch ;
while ((ch= isr1.read())!=-1){
ism1.write(ch);
System.out.print((char) ch);
}
isr.close();
isr1.close();
ism.close();
ism1.close();
}
}
package Demo1;
import java.io.*;
public class Demo1 {
public static void main(String[] args) throws IOException {
BufferedReader isr = new BufferedReader(new FileReader("cod.java"));
BufferedWriter ism = new BufferedWriter(new FileWriter("cod7.java"));
//一次读写一个字符数据
//int ch;
//while((ch=isr.read())!=-1){
// ism.write(ch);
//}
//一次读写一个字符数组数据
char[] chs = new char[1024];
int len;
while((len=isr.read(chs))!=-1){
ism.write(chs,0,len);
}
ism.close();
isr.close();
}
}
字符缓冲流的特有功能
BufferedWrite;
- void newLine():写一行分隔符,行分隔符有系统属性定义
BufferedReader;
- void String readLine():读一行文字,结果包含行的内容的字符串,不包括任何终止字符,如果流的结尾已经到达,则为null
package Demo1;
import java.io.*;
public class Demo1 {
public static void main(String[] args) throws IOException {
// BufferedWriter br =new BufferedWriter(new FileWriter("cod.txt"));
// for (int i =0;i<10;i++){
// br.write("Hello"+i);
// br.newLine();
// }
// br.flush();
// br.close();
BufferedReader br = new BufferedReader(new FileReader("cod.txt"));
// String line = br.readLine();
// System.out.println(line);
// line = br.readLine();
// System.out.println(line);
// line = br.readLine();
// System.out.println(line);
// line = br.readLine();
// System.out.println(line);//null
String line;
while((line = br.readLine())!=null){
System.out.println(line);
}
br.close();
}
}
IO流小结