标签:imp null 字符编码 字节流 class throw exception 方法 adl
字符流/转换流:由于字节流操作中文不方便,所以出现了。
总共有以下方法:
1、InputStreamReader、OutputStreamWriter
2、FileReader、FileWriter
3、BufferedReader BufferedWriter的普通方法
4、BufferedReader BufferedWriter的特殊方法
字符流=字节流+编码表
编码的方法:
byte[] getBytes(String charsetName):使用指定的字符集合把字符编码成字节数组 String→byte[]
解码的方法:
String(byte[] bytes,String charsetName):通过指定的字符集解码字节数组 byte[]→String
代码:
public static void main(String[] args) {
String s = "你好"; 编码
byte[] by = s.getBytes("UTF-8"); 默认为GBK
System.out.println(Arrays.toString(by));
String ss = new String (by,"UTF-8"); 解码
System.out.println(ss);
}
字符输入流
方法:
int read():一次读取一个字符
int read(char[] chs):一个读取一个字符数组
代码
package cn.idcast3;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class Day902 {
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream(
"osw.txt"));
int ch = 0;
while ((ch = isr.read()) != -1) {
System.out.print((char) ch);
}
isr.close();
}
}
字符输出流
方法:
public void write(int ch):一次写一个字符
public void write(char[] cbuf,int off,int len):一次写一个字符数组的一部分
package cn.idcast3;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class Day9 {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(
"c.txt"));
osw.write("中国");
osw.close();
}
}
字符输入流和字符输出流都可以简写
字符输入流简化为:FileReader
字符输出流简化为:FileWriter
所以代码可以写成
FileReader:
package cn.idcast3;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Day903 {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("a.txt");
int ch =0;
while((ch=fr.read())!=-1) {
System.out.print((char) ch);
}
fr.close();
}
}
FileWriter:
package cn.idcast3;
import java.io.FileWriter;
import java.io.IOException;
public class Day904 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("a.txt");
fw.write("中国");
fw.close();
}
}
高效字符流/字符缓冲流
BufferedReader:高效字符缓冲输入流
BufferedWriter:高效字符缓冲输出流
代码换成
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
其他和InputSteamReader一样,同理 BufferedWriter也是
字符缓冲流的特殊方法
BufferedReader
public String readLine():一次读取一行数据,没有就返回null
BufferedWriter
public void new Line():根据系统决定换行符
flush():刷新缓冲区
close()和flush()的区别:
close():关闭流对象,但是要先刷新,关闭以后流就不能使用了
flush():刷新缓冲区,流对象还能使用
字符缓冲流特殊方法的代码
package cn.idcast3;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Day905 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("d.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("e.txt"));
String line = null;
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
bw.flush();
}
br.close();
bw.close();
}
}
标签:imp null 字符编码 字节流 class throw exception 方法 adl
原文地址:http://www.cnblogs.com/zengjiao/p/6266337.html