InputStreamReader/OutputStreamWriter
构造方法
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, String charsetName)
InputStreamReader(InputStream in, Charset cs)
InputStreamReader(InputStream in, CharsetDecoder dec)
------------------------------------------------------
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out, String charsetName)
OutputStreamWriter(OutputStream out, Charset cs)
OutputStreamWriter(OutputStream out, CharsetEncoder enc)
代码示例
public static void main(String[] args) throws Exception {
FileInputStream in = new FileInputStream("D:\\A.txt");
//未指定编码,使用项目默认编码,如果与文件编码方式不一致,则会出现乱码
InputStreamReader isr = new InputStreamReader(in);
FileOutputStream out = new FileOutputStream("D:\\A.txt");
OutputStreamWriter osw = new OutputStreamWriter(out);
// int temp;
// while ((temp = isr.read()) != -1) {
// //一次读一个字符
// System.out.println((char)temp);
// }
int c;
char[] buffer = new char[8*1024];
while ((c = isr.read(buffer, 0, buffer.length)) != -1) {
String s = new String(buffer,0,c);
System.out.println(s);
osw.write(s);
// osw.write(buffer,0,c);
osw.flush();
}
isr.close();
osw.close();
}
除此之外,也可以使用FileReader/FileWriter 它们拓展了构造方法,但是无法选择编码格式
字符过滤流BufferedReader/(BufferedWriter/PrintWriter)
public static void main(String[] args) throws Exception {
File src = new File("D:\\src.txt");
File target = new File("D:\\target.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(src)));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(target)));
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();//需要单独写出换行
bw.flush();
}
br.close();
bw.close();
}
public static void main(String[] args) throws Exception {
File src = new File("D:\\src.txt");
File target = new File("D:\\target.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(src)));
PrintWriter pw = new PrintWriter(target);
// PrintWriter pw1 = new PrintWriter(OutputStream out, boolean autoFlush);
String line;
while ((line = br.readLine()) != null) {
pw.println(line);
// pw.print(line+"\n");
pw.flush();
}
br.close();
pw.close();
}