天天看点

Java基础-知识点总结-Java IO(四)转换流、打印流

Java IO(四)转换流、打印流

【转换流】

      转换流的由来:

             转换流是字节流和字符流之间的桥梁;方便了字符流与字节流之间的操作。

      转换流的应用:

             当字节流中的数据都是字符时,转成字符流更高效。

      【InputStreamReader】

             publicclassInputStreamReader extends Reader:

                    InputStreamReader是字节流通向字符流的桥梁:它使用指定的charset读取字

                    节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以

                    接受平台默认的字符集。

                    -publicStringgetEncoding():

返回此流使用的字符编码的名称。

             例:

// 获取键盘录入对象
		InputStream in = System.in;
		// 使用转换流InputStreamReader将字节流对象转换为字符流对象
		InputStreamReader isr = new InputStreamReader(in);
		// 为了提高效率,将字符流进行缓冲技术高效操作
		BufferedReader bufr = new BufferedReader(isr);
		String line = null;
		while ((line = bufr.readLine()) != null) {
			// 判断输入数据是否为over,是则退出循环结束程序
			if ("over".equalsIgnoreCase(line))
				break;
			System.out.println(line.toUpperCase());
		}
		bufr.close();
           

      【OutputStreamWriter】

             publicclass OutputStreamWriter extendsWriter:

                    OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的charset将要写

                    入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则

                    将接受平台默认的字符集。

                    -publicStringgetEncoding():

返回此流使用的字符编码的名称。

             例:

// 获取键盘录入对象
		InputStream in = System.in;
		// 使用转换流InputStreamReader将字节流对象转换为字符流对象
		InputStreamReader isr = new InputStreamReader(in);
		// 为了提高效率,将字符流进行缓冲技术高效操作
		BufferedReader bufr = new BufferedReader(isr);
		OutputStream out = System.out;
		OutputStreamWriter osw = new OutputStreamWriter(out);
		BufferedWriter bufw = new BufferedWriter(osw);
		String line = null;
		while ((line = bufr.readLine()) != null) {
			if ("over".equalsIgnoreCase(line))
				break;
			bufw.write(line);
			bufw.newLine();
			bufw.flush();
		}
		bufw.close();
		bufr.close();
           

             标准输入输出流最常见写法:

                    //获取键盘录入最常用写法:

                    BufferedReader bufr = new BufferedReader(newInputStreamReader(System.in));

                    BufferedWriterbufw = new BufferedWtiter(new OutputStreamWriter(System.out));

【打印流】

      该流提供了打印方法,可以将各种数据类型的数据都原样打印,是输出信息

最方便的类。

      字节打印流:PrintStream

             publicclassPrintStream extendsFilterOutputStream

implements Appendable,Closeable

      字符打印流:PrintWriter

             publicclassPrintWriter extends Writer

      两个打印流的构造方法都可以接收File对象,字符串文件名,字节流对象,而对于字

      符打印流还可以接收字符流对象。

      例:

// 接收键盘录入
		BufferedReader bufr = new BufferedReader(
				new InputStreamReader(System.in));
		// 使用字符打印流将数据打印到控制台,并自动刷新
		PrintWriter out = new PrintWriter(System.out, true);
		String line = null;
		while ((line = bufr.readLine()) != null) {
			if ("over".equals(line))
				break;// 输入over,结束程序
			// 打印数据
			out.println(line.toUpperCase());
		}
		// 关闭流
		out.close();
		bufr.close();