java中io流案例_Java 中IO流字符流详解及实例

Java—IO流 字符流

java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)。

文件是byte byte byte ... 的数据序列。

文本文件是文本(char)序列按照某种编码方案(uft-8、utf-16be、gbk)序列化为byte的存储结果。

字符流(Reader、Writer)-->操作的是文本、文本文件

1.字符的处理,一次处理一个字符

2.字符的底层仍然是基本的字节序列

3.字符流的基本实现:

InputStreamReader是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。

OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。

public class ISReaderAndOSWriter {

public static void main(String[] args) throws IOException {

FileInputStream in = new FileInputStream("F:\\javaio\\java.txt");

FileOutputStream out = new FileOutputStream("F:\\javaio\\java1.txt");

InputStreamReader isr = new InputStreamReader(in, "gbk");

OutputStreamWriter osw = new OutputStreamWriter(out, "gbk");

int c;

// while ((c = isr.read()) != -1) {

// System.out.print((char)c);

// }

char[] buf = new char[8 * 1024];

while ((c = isr.read(buf, 0, buf.length)) != -1) {

String s = new String(buf, 0, c);

//System.out.println(s);

osw.write(s);

}

isr.close();

osw.close();

}

}

4.文件读写流,FileReader和FileWriter,读取字符文件和写入字符文件的便捷类。

public class FileReaderAndFileWriter {

public static void main(String[] args) throws Exception {

FileReader fr = new FileReader("F:\\javaio\\javautf.txt");

FileWriter fw = new FileWriter("F:\\javaio\\javautf1.txt");

//FileWriter fw = new FileWriter("F:\\javaio\\javautf1.txt", true);//向指定文件中追加内容

char[] buf = new char[1 * 1024];

int c;

while ((c = fr.read(buf, 0, buf.length)) != -1) {

System.out.println(c);

fw.write(buf, 0, c);

fw.flush();

}

fr.close();

fw.close();

}

}

5.字符流的过滤器

BufferedReader,一次读一行

BufferedWriter/PrintWriter,一次写一行

public class BufRAndBufWOrPrintW {

public static void main(String[] args) throws Exception {

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("F:\\javaio\\javautf.txt")));

//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("F:\\javaio\\javautf2.txt")));

PrintWriter pw = new PrintWriter("F:\\javaio\\javautf3.txt");

String s;

while ((s = br.readLine()) != null) {

//一次读一行,不能识别换行符

//bw.write(s);

//bw.newLine();//写入一个行分隔符

//bw.flush();

pw.println(s);//通过写入行分隔符字符串终止当前行

pw.flush();

}

br.close();

//bw.close();

pw.close();

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

你可能感兴趣的:(java中io流案例)