黑马程序员技术交流社区
标题:
【记录】代码练习-字符流
[打印本页]
作者:
Kevin.Kang
时间:
2015-7-27 17:04
标题:
【记录】代码练习-字符流
字符流:通过一个转换流把字节流转换成字节流+编码表
常见编码表:
ACSII表:7位表示一个数据,最高位为符号位。
Unicode表:国际标准码,融合了多种文字。
ISO-8859-1:拉丁码表,8位表示一个数据。
GB2312/GBK/GB18030:中文码表,GBK18030替代GBK
BIG5:通行于台湾,香港地区的繁体字编码表。俗称“大五码”
UTF-8:最多用三个字节来表示一个字符。能用一个就用一个,现在不行就用三个。
作者:
徐会会
时间:
2015-7-27 17:21
顶一下,,,,
作者:
Kevin.Kang
时间:
2015-7-27 17:36
本帖最后由 Kevin.Kang 于 2015-7-27 17:52 编辑
package com.kxg.zifu;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/*
* OutputStreamWriter:字符输出流
* public OutputStreamWriter(OutputStream out):根据默认编码表把字节流的数据转换为字符流
* public OutputStreamWriter(OutputStream out,Charset cs):根据指定编码表把字节流的数据转换为字符流
*
* InputStreamReader:字符输入流
* public InputStreamReader(InputStream in):根据默认编码表把字节流的数据转换为字符流
* public InputStreamReader(InputStream in,Charset cs):根据指定编码表把字节流的数据转换为字符流
*
*/
public class ZiFu {
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream(
"a.txt"));
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(
"b.txt"));
int i = 0;
while ((i = isr.read()) != -1) {
osw.write(i);
}
osw.flush();
osw.close();
isr.close();
}
}
复制代码
默认的编码表跟随系统,系统为简体中文,默认的编码表就为简体中文。
flush()和close()的区别:
flush():刷新缓冲区,刷新之后流对象还可以继续使用。
close():关闭流对象之前会刷新一次缓冲区,关闭之后流对象就不能继续使用。
作者:
Kevin.Kang
时间:
2015-7-27 17:50
FileWriter和FileReader:
package com.kxg.zifu;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 由于转换流的名称过长,Java提供了其子类供我们使用。
* OutputStreamWriter = FileOutputStream + 编码表
* FileWriter = FileOutputStream + 编码表
*/
public class ZiFuDemo {
public static void main(String[] args) throws IOException {
// public FileReader(String fileName)
// 构造方法中可以直接给一个路径或者文件名
FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");
FileReader fr2 = new FileReader("a.txt");
FileWriter fw2 = new FileWriter("c.txt");
int i = 0;
while ((i = fr.read()) != -1) {
fw.write(i);
}
char[] chs = new char[1024];
int len = 0;
while ((len = fr2.read(chs)) != -1) {
fw2.write(chs);
}
fr.close();
fw.close();
fw2.close();
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-7-27 18:08
高效字符流:
package com.kxg.zifu;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class ZiFuDemo2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
BufferedReader br2 = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bw2 = new BufferedWriter(new FileWriter("c.txt"));
int i = 0;
while ((i = br.read()) != -1) {
bw.write(i);
}
char[] chs = new char[1024];
int len = 0;
while ((len = br2.read(chs)) != -1) {
bw2.write(chs);
}
br.close();
bw.close();
br2.close();
bw2.close();
}
}
复制代码
作者:
Kevin.Kang
时间:
2015-7-27 18:35
高效字符流的特殊功能:一次读写一行
package com.kxg.zifu;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class ZiFuDemo3 {
public static void main(String[] args) throws IOException {
write();
read();
}
private static void write() throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
for (int x = 0; x < 10; x++) {
bw.write("hello" + x);
bw.newLine();// 写入一个行分隔符,也就是换行
bw.flush();
}
bw.close();
}
private static void read() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
String line = null;
// readLine()方法读取到换行就结束了,打印的时候就要自己加换行。
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2