字符流:读写字符的
*父类是Reader和Writer
操作流程
在Java中IO操作也是有相应步骤的,以文件操作为例,主要的操作流程如下:
- 使用File类打开一个文件
- 通过字节流或字符流的子类,指定输出的位置
- 进行读/写操作
- 关闭输入/输出
思维导图
相关练习代码。
/**
* Date : 2017/7/1
* Author : Hsj
* Description :字符流知识总结
*/
public class Demo2 { //可以读取字符
@Test
public void fun() throws IOException {
FileReader fr = new FileReader("zzz.txt");
int read = fr.read();
System.out.println(read);
char c = (char) read;
System.out.println(c);
fr.close();
} //连续读取文字
@Test
public void fun2() throws IOException {
FileReader fr = new FileReader("zzz.txt");
int len;
while ((len = fr.read()) != -1) {
System.out.print((char) len);
}
fr.close();
} //文字写入
@Test
public void fun3() throws IOException {
FileWriter fw = new FileWriter("kk.txt");
fw.write("我是胡少君,你在哪里");
fw.close();
} //字符拷贝
@Test
public void fun4() throws IOException {
FileReader fr = new FileReader("kk.txt");
FileWriter fw = new FileWriter("xxx.txt");
int len;
while ((len = fr.read()) != -1) {
fw.write(len);
}
fr.close();
fw.close();//有一个小的缓冲区不关流写不进去
} //自定义数组的拷贝
@Test
public void fun5() throws IOException {
FileReader fr = new FileReader("kk.txt");
FileWriter fw = new FileWriter("kj.txt");
char[] chars = new char[1024 * 8];
int len;
while ((len = fr.read(chars)) != -1) {
fw.write(chars, 0, len);
}
fr.close();
fw.close(); } @Test
//缓冲字符流
public void fun6() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("kj.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("hsj.txt"));
int len;
while ((len = br.read()) != -1) {
bw.write(len);
}
br.close();
bw.close();
} //读取一行
@Test
public void fun7() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("hsj.txt"));
String s;
while ((s = br.readLine()) != null) {//一行一行的读取文件
System.out.print(s);
}
br.close();
} //添加换行符
@Test
public void fun8() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("hsj.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("lyb.txt"));
String s;
while ((s = br.readLine()) != null) {
bw.write(s);
bw.newLine();//换行
}
br.close();
bw.close(); } //文本反转
@Test
public void fun9() throws IOException {
List<String> slist = new ArrayList<>();
BufferedReader br = new BufferedReader(new FileReader("hsj.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("tran.txt"));
String s;
while ((s = br.readLine()) != null) {
slist.add(s);
} for (int i = slist.size() - 1; i >= 0; i--) {
bw.write(slist.get(i));
bw.newLine();
}
bw.close();
br.close();
} // LineNumberReader的使用
@Test
public void fun10() throws IOException {
LineNumberReader lnr = new LineNumberReader(new FileReader("hsj.txt"));
String line;
while ((line = lnr.readLine()) != null) {
System.out.println(lnr.getLineNumber() + ":" + line); }
lnr.close();
}
}