Java I/O系统之转换流

本文介绍了Java中转换流InputStreamReader和OutputStreamWriter的基本概念及其应用场景。通过两个实例详细展示了如何使用OutputStreamWriter进行文件写入,并利用InputStreamReader配合BufferedReader实现按行读取输入。适合初学者了解转换流的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.转换流介绍

1)        InputStreamReader和OutputStreamWriter用于字节数据到字符数据之间转换

2)        InputStreamReader需要和InputStream“套接”

3)        OutputStreamWriter需要和OutputStream”套接”

4)        转换流在构造时可以指定其编码集合,例如:

InputStream isr = new InputStreamReader(System.in,”ISO8859_1”);

2.转换流例子一

package com.owen.io;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

/**
 * 使用OutputStreamWriter转换流实现文件写入
 * 
 * @author OwenWilliam 2016-7-19
 * @since
 * @version v1.0.0
 *
 */
public class TestTransForm1
{

	@SuppressWarnings("resource")
	public static void main(String[] args)
	{
		try
		{
			// 写入文件的路径
			OutputStreamWriter osw = new OutputStreamWriter(
					new FileOutputStream(
							"E:/workspace/Java/IO/src/com/owen/io/char.txt"));
			osw.write("this application will use Stream!");
			System.out.println(osw.getEncoding());
			// 写好了记得关闭
			osw.close();
			// 后面true指,接着上面写的内容后面继续写,如果去掉,那么就会重新写入(擦去原有的)
			// 后面ISO8859_1是规定的写入编码
			osw = new OutputStreamWriter(new FileOutputStream(
					"E:/workspace/Java/IO/src/com/owen/io/char.txt", true),
					"ISO8859_1");
			osw.write("it will add in the end text!");
			System.out.println(osw.getEncoding());
			osw.close();
		} catch (IOException e)
		{
			e.printStackTrace();
		}

	}

}

3.转换流例子二

package com.owen.io;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 使用InputStreamReader实现读取,同时用BufferedReader实现一行一行读取 这里是用到同步的线程,即阻塞。
 * 
 * @author OwenWilliam 2016-7-19
 * @since
 * @version v1.0.0
 *
 */
public class TestTransForm2
{

	public static void main(String[] args)
	{
		// System.in其实是就相当于流“管道”的字节流,然后外面包裹InputStreamReader,实现字节读取
		InputStreamReader isr = new InputStreamReader(System.in);
		// 使用BufferedReader,可以实现一行一行的读取
		BufferedReader br = new BufferedReader(isr);
		String s = null;
		try
		{
			// 读取一行
			s = br.readLine();
			while (s != null)
			{
				// 退出
				if (s.equalsIgnoreCase("exit"))
					break;
				System.out.println(s.toUpperCase());
				s = br.readLine();
			}
			br.close();
		} catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值