字符写入流和输出流

package IO;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;

/**
 * 建立一个字符流对象来将控制台当中所输入的数据信息通过字符流来将其读入到内存当中的指定位置
 * 建立一个字符流写入对象用于将内存当中的数据写入到指定的文件当中
 */
public class ReaderAndWriterDemo{
//	使用字符流读操作来将控制台当中的数据读入到内存当中
	public void test1() throws IOException {
//		实例化一个字节输入流对象用于对字节数据进行读取操作
		InputStream inputStream=System.in;
//		实例化一个字符输入流对象,该对象实现了对字节流对象的封装操作
		Reader reader=new InputStreamReader(inputStream);
//		实例化一个字符数组对象用于对字符输入流对象所读取的数据进行存放
		char[] cs=new char[1024];
		int j=0;
//	使用输入流对象来从控制台当中进行数据信息的读取操作,并将所读取到的数据信息存放到内存到当中的字符数组之中
		while(true)
		{
			j=reader.read(cs);
			System.out.println("j="+j);
			String str=new String(cs,0,j).trim();
			/**
			 * 程序在执行之后输入end后会发现无法跳出while循环,是因为用户输入的不是end而是"end"+回车键==="end\r\n"
			 * String str=new String(cs,0,j)
			 * 所以在执行end后面还有多个隐形的空格键,所以str永远无法和end字符串对象进行匹配
			 * 所以要将转换之后的str对象后面的空字符串进行去除
			 */
			if(str.equals("end"))
			{
				System.out.println(str.equals("end"));
				break;
			}
			System.out.println(str);
		}
		reader.close();
		inputStream.close();
	}
//	使用字符缓存流对象来将控制台当中的数据读取到内存当中指定的字符数组当中并将之转变为String来输出
	public void test2() throws IOException
	{
		InputStream inputStream=System.in;
		Reader reader=new InputStreamReader(inputStream);
		BufferedReader bufferedReader=new BufferedReader(reader);
		while(true)
		{
			String str=bufferedReader.readLine();
			if(str.equals("end"))
				break;
			System.out.println(str);
		}
		bufferedReader.close();
		reader.close();
		inputStream.close();
	}
//	使用字符输出流来将内存当中的数据写入到文件对象当中,用于实现将用户输入到控制台当中的数据写入到文件对象当中去
	public void test3() throws IOException
	{
		InputStream inputStream=System.in;
		InputStreamReader reader=new InputStreamReader(inputStream);
		BufferedReader bufferedReader=new BufferedReader(reader);
		File file=new File("C:/Users/Administrator/Desktop/新建文本文档.txt");
//			建立一个字符输出流对象用于将指定的数据信息写入到文件对象当中
		Writer writer=new FileWriter(file);
		BufferedWriter bufferedWriter=new BufferedWriter(writer);
		String temp=null;
		while(true)
		{
			temp=bufferedReader.readLine();
			if(temp.equals("end"))
				break;
			bufferedWriter.write(temp);
//			当将str字符串对象写入到文件当中之后将另起一行继续等待下一行当中的内容的输入
			bufferedWriter.newLine();
			bufferedWriter.flush();
		}
		bufferedReader.close();
		reader.close();
		inputStream.close();
		bufferedWriter.close();
		writer.close();
	}
	public static void main(String[] args) throws IOException
	{
		ReaderAndWriterDemo demo=new ReaderAndWriterDemo();
		
//		demo.test2();
		demo.test3();
	}
}

猜你喜欢

转载自blog.csdn.net/qq_34970891/article/details/80761666