Java学习日志(19-4-IO流-流输入与输出)

读取键盘录入

/* 
System.out:对应标准输出设备,控制台
System.in:对应标准输入设备,键盘

需求:
通过键盘录入数据
录入一行后将该行进行打印
录入over则结束
 */
import java.io.*;
class ReadIn{
	public static void main(String[] args)throws Exception{
		InputStream in=System.in;
		// 将数据录入缓存区,当接收到回车指令时再打印
		StringBuilder sb=new StringBuilder();
		while(true){
			int ch=in.read();
			if(ch=='\r'){
				continue;
			}
			if(ch=='\n'){
				String s=sb.toString();
				if("over".equals(s)){
					break;
				}
				System.out.println(s.toUpperCase());
				sb.delete(0,sb.length());
			}
			else{
				sb.append((char)ch);	
			}
		}
	}
}

读取转换流

    上述键盘录入其原理就是readLine方法

    而readLine()是BufferedReader中的方法

    键盘录入是字节流InputStream的方法

    需要用到InputStreamReader()转换

import java.io.*;
class TransStreamDemo{
	public static void main(String[] args)throws IOException{
		// 获取键盘录入对象
		InputStream in=System.in;
		// 将字节流对象转成字符流对象
		InputStreamReader isr=new InputStreamReader(in);
		// 为了提高效率,将字符流进行缓冲区技术
		BufferedReader bufr=new BufferedReader(isr);
		String line=null;
		while((line=bufr.readLine())!=null){
			if("over".equals(line)){
				break;
			}
			System.out.println(line.toUpperCase());
		}
		bufr.close();
	}
}

写入转换流

import java.io.*;
class TransStreamDemo{
	public static void main(String[] args)throws IOException{
		// 获取键盘录入对象
		InputStream in=System.in;
		// 将字节流对象转成字符流对象
		InputStreamReader isr=new InputStreamReader(in);
		// 为了提高效率,将字符流进行缓冲区技术
		BufferedReader bufr=new BufferedReader(isr);
		
		// 写入转换流
		OutputStream out=System.out;
		OutputStreamWriter osw=new OutputStreamWriter(out);
		BufferedWriter bufw=new BufferedWriter(osw);
		// BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));
		
		String line=null;
		while((line=bufr.readLine())!=null){
			if("over".equals(line)){
				break;
			}
			bufw.write(line.toUpperCase());
			bufw.newLine();
			bufw.flush();
		}
		bufr.close();
	}
}

流操作规律

/* 
1.将键盘录入的数据储存到文件中
2.将文件的数据打印到控制台上

流操作的基本规律
	确定使用的流对象
	1.明确源和目的
		源:输入流——————InputStream	Reader
		目的:输出流————OutputStream Writer
	2.操作的数据是否是纯文本
		是:字符流
		否:字节流
	3.最后明确使用哪个具体对象,通过设备具体区分
		源设备:内存,硬盘,键盘
		目的设备:内存,硬盘,控制台
 */

import java.io.*;
class TransStreamDemo2{
	public static void main(String[] args)throws IOException{

		// BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
		BufferedReader bufr=new BufferedReader(new InputStreamReader(new FileInputStream("out.txt")));
		// BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out.txt")));
		BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));
		
		String line=null;
		while((line=bufr.readLine())!=null){
			if("over".equals(line)){
				break;
			}
			bufw.write(line.toUpperCase());
			bufw.newLine();
			bufw.flush();
		}
		bufr.close();
	}
}

改变标准输入输出设备

/*
System.setIn()
System.setOut()
*/
System.setIn(new FileInputStream("x.java"));
System.setOut(new PrintStream(o.txt));

异常日志信息

import java.io.*;
import java.util.*;
import java.text.*;
class ExceptionInfo{
	public static void main(String[] args)throws IOException{
		try{
			int[]arr=new int[2];
			System.out.println(arr[3]);
		}
		catch(Exception e){
			// e.printStackTrace(new PrintStream("Info.txt"));
			try{
				Date d=new Date();
				SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
				String s=sdf.format(d);
				PrintStream ps=new PrintStream("exeception.log");
				ps.println(s);
				System.setOut(ps);
			}
			catch(IOException ex){
				throw new RuntimeException("日志文件创建失败");
			}
			e.printStackTrace(System.out);
		}
	}
}

系统信息

import java.util.*;
import java.io.*;
class SystemInfo{
	public static void main(String[] args)throws IOException{
		Properties prop=System.getProperties();
		// prop.list(System.out);
		prop.list(new PrintStream("sysinfo.txt"));
	}
}

 

转载于:https://my.oschina.net/Almon/blog/752204

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值