Java I/O---Reader & Writer(字符流)

1.Reader & Writer

当我们初次看见ReaderWriter类时,可能会以为这是两个用来替代InputStreamOutputStreamt的类,但实际上并非如此。

尽管一些原始的“流”类库不再被使用(如果使用它们,则会收到编译器的警告信息),但是InputStream和OutputStreamt在以   面向字节形式的I/O中仍可以提供极有价值的功能,Reader和Writer提供兼容Unicode与面向字符的I/O功能。

有时我们必须把来自于 “字节” 层次结构中的类和 “字符 ” 层次结构中的类结合起来使用(实现字节和字符的转化)。 为了实现这个目的,要用到 “适配器” ( adapter )类: lnputStreamReader(子类FileReader)可以把 InputStream转换为Reader(字节转化为字符),而         OutputStreamWriter(子类FileWriter)可以把OutputStream转换Writer(字符转化为字节)。

Java I/O---字符与字节转换流---FileReader&FileWriter

2. BufferedReader & BufferedWriter

两个类实现字符流缓冲

  1 public class CharStreamBufferDemo {
  2
  3 	/**
  4 	 * @param args
  5 	 * @throws IOException
  6 	 */
  7 	public static void main(String[] args) throws IOException {
  8
  9 		/*
 10 		 * 演示字符流的缓冲区。
 11 		 * BufferedReader
 12 		 * BufferedWriter
 13 		 */
 14 //		writeTextByBuffered();
 15 		readTextBuffered();
 16
 17 //		读取键盘录入专业。Scanner=流+正则表达式。方法都是按照某种规则在读取数据。
 18 //		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in))
 19 //		bufr.readLine();
 20 	}
 21
 22 	public static void readTextBuffered() throws IOException {
 23
 24 		FileReader fr = new FileReader("tempfile\\bufw.txt");//将字节转化为字符
 25
 26 		BufferedReader bufr = new BufferedReader(fr);
 27
 28 		String line = null;
 29 		while((line=bufr.readLine())!=null){
 30
 31 			System.out.println(line);
 32
 33 		}
 34
 35 		/*String line1 = bufr.readLine();
 36 		System.out.println(line1);
 37 		String line2 = bufr.readLine();
 38 		System.out.println(line2);
 39 		String line3 = bufr.readLine();
 40 		System.out.println(line3);
 41 		String line4 = bufr.readLine();
 42 		System.out.println(line4);
 43 		String line5 = bufr.readLine();
 44 		System.out.println(line5);*/
 45
 46 		bufr.close();
 47
 48 	}
 49
 50 	public static void writeTextByBuffered() throws IOException {
 51
 52 		//1,明确目的。
 53 		FileWriter fw = new FileWriter("tempfile\\bufw.txt");//将字符转为字节
 54
 55 		//2,创建缓冲区对象。明确要缓冲的流对象。
 56 		BufferedWriter bufw = new BufferedWriter(fw);
 57
 58 		for(int x=1; x<=4; x++){
 59
 60 			bufw.write(x+"abc");
 61 			bufw.newLine();
 62 			bufw.flush();
 63 		}
 64
 65 //		bufw.write("abc");
 66 //		bufw.newLine();//System.getProperty("line.separator");
 67 //		bufw.write("hello");
 68 		bufw.close();
 69
 70 	}
 71
 72 }
 73 

2017-12-31

内容来自java编程思想的传智播客课程

原文地址:https://www.cnblogs.com/zhuweiheng/p/8157264.html

时间: 2024-10-28 14:43:23

Java I/O---Reader & Writer(字符流)的相关文章

Java核心知识点-字节流和字符流详解

字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 区别:实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示. 下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流. 范例:使用字节流不关闭执行 Java代码   package org.lxh.demo12.byteiodemo; import java.io.File; import 

java IO之字节流和字符流-OutputSteam和InputStream

java中的IO流分为字节流和字符流:每种流又分输入流和输出流. 先来说一下输入流和输出流:输入输出是针对程序内存而言,那么输入就是向内存写入数据:输出就是从程序内存写出数据. 字节流使用过字节直接操作数据. 字符流则是通过字节写入到缓存,再通过缓存区操作数据. 字节流的父类为InputStream(输入流)和OutputStream(输出流). IntputStream的直接子类有:AudioInputStream,ByteArrayInputStream,FileInputStream,Fi

Java学习笔记38(字符流)

字符输出流:Writer类:使用时候需要它的子类 局限性:只能写文本文件,无法写其他文件 方法: package demo; import java.io.FileWriter; import java.io.IOException; public class WriterDemo { public static void main(String[] args) throws IOException { FileWriter fw = new FileWriter("d:\\java.txt&q

JAVA IO ( 字节流转化为字符流 )

public class Index { public static void main(String[] args) { // 创建文件对象 File f1 = new File("src/字节流_转化成_字符流/text.txt"); File f2 = new File("src/字节流_转化成_字符流/textCopy.txt"); try ( // 创建输入输出流(java1.7开始在这里面的代码会自动关闭) Reader inputStream = ne

java IO的字节流和字符流及其区别

1. 字节流和字符流的概念    1.1 字节流继承于InputStream    OutputStream,    1.2 字符流继承于InputStreamReader    OutputStreamWriter.在java.io包中还有许多其他的流,主要是为了提高性能和使用方便. 2. 字节流与字符流的区别    2.1 要把一片二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一片二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作,用一种抽象的方式进行描述,这

Java中字节流如何转字符流,OutputStreamWriter用法

OutputStreamWriter 将字节流转换为字符流.是字节流通向字符流的桥梁.如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:UTF-8: 步骤: 1.创建流 子类对象  绑定数据目的. 1 FileOutputStream fos = new FileOutputStream("c:\\utf.txt"); 2.将字节转为字符,并声明utf-8格式(万国码). 1 OutputStreamWriter sow = new OutputStreamWriter(f

Java中的IO操作 字符流:FileReader和 FileWriter

FileReader和 FileWriter  读写字符串 1 package object.io; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.FileReader; 6 import java.io.FileWriter; 7 import java.io.IOException; 8 9 public class FileWrite { 10 11 public s

reader,字符流

1. public class Demo1 { public static void main(String[] args) throws IOException { File file = new File("E:\\a.txt"); FileReader fileReader = new FileReader(file); int content = 0; while ((content=fileReader.read())!=-1) { System.out.print((cha

Java IO输入输出流 FileWriter 字符流

字节缓冲流 //为什么要使用包装流,使用包装流是为了提高读写操作的性能. public class Packing_flowDemo { public static void main(String[] args) throws Exception { File file = new File("file/packing_flow.txt"); //包装流的写法,缓冲区内存大小.1024*8=8192 (byte) // BufferedOutputStream packing = n