读取键盘输入(单个字节读取)
循环打印键盘输入,当接收到“over”时退出。
import java.io.*;
class KeyboardReadLineDemo
{
public static void main(String[] args)
{
KeyboardReadLine();
}
public static void KeyboardReadLine(){
//标准输入流,此流对应键盘输入流等。
//返回输入流。
//以下三句话汇成一句。
//InputStream in=System.in;
//InputStreamReader isr=new InputStreamReader(in);
//BufferedReader bufr=new BufferedReader(isr);
//最终语句。
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in))
String line=null;
try{
while((line=bufr.readLine())!=null){
if("over".equals(line)){
break;
}
System.out.println(line);
}
}
catch(IOException e){
throw new RuntimeException("键盘读取错误");
}
finally{
try{
if(bufr!=null){
bufr.close();
}
}
catch(Exception e){
throw new RuntimeException("关闭失败");
}
}
}
}
读取键盘输入(InputStreamReader-字节>字符)
/*
InputStreamReader 实例
*/
import java.io.*;
class InputStreamReaderDemo
{
public static void main(String[] args) throws Exception
{
/*
//构建标准字节输入流
InputStream in=System.in;
//将字节输入流转换为字符输入流
InputStreamReader isr=new InputStreamReader(in);
//创建字符输入流缓冲区
BufferedReader bufr=new BufferedReader(isr);
*/
//将以上语句组织成一句
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String str=null;
//循环读取输入
while((str=bufr.readLine())!=null){
//over结束
if("over".equals(str))
break;
else{
System.out.println(str);
}
}
}
}
读取键盘输入(字符->字节)
/*
字符转化为字节
*/
import java.io.*;
class OutputStreamWriterDemo
{
public static void main(String[] args) throws Exception
{
//定义读取缓冲区变量
BufferedReader bufr=null;
//定义写入缓冲区变量
BufferedWriter bufw=null;
try{
//从输入流中读取数据到读取缓冲区中。
bufr=new BufferedReader(new InputStreamReader(System.in));
//从输出流中读取数据到写入缓冲区中。
bufw=new BufferedWriter(new OutputStreamWriter(System.out));
String str=null;
//循环读取键盘输入数据。
while((str=bufr.readLine())!=null){
if("over".equals(str)){
break;
}
//将从键盘读取的数据输出到输出缓冲区中。
bufw.write(str);
//换行。
bufw.newLine();
//刷新
bufw.flush();
}
}
catch(IOException e){
throw new RuntimeException("error.");
}
//关闭流
finally{
try{
if(bufr!=null){
bufr.close();
}
}
catch(IOException e){
throw new RuntimeException("error.");
}
try{
if(bufw!=null){
bufw.close();
}
}
catch(IOException e){
throw new RuntimeException("error.");
}
}
}
}
流操作的基本规律
1.明确源和目的
源头:输入流:InputStream Reader
目的:输出流:OutputStream Writer
2.操作的数据是否是纯文本
是:字符流
否:字节流
3.当体系明确后,还需明确具体使用哪个对象
通过设备进行区分
源头设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
例:将一个文本文件存储到另外一个文件
源头:文本文件(字符),使用读取流:InputStream Reader
Reader体系中可以操作文件的对象是FileReader
是否需要提高效率?是:加入Reader体系中的缓冲区BufferedReader
FileReader fileR=new FileReader("cs.txt");
BufferedReader bufr=new BufferedReader(fileR);
目的:文本文件(字符),使用写入流:OutputStream Writer
Wirter体系中可以写入字符的对象是FileWriter
是否需要提高效率?是:加入Writer体系中的BufferedWriter
FileWriter fileW=new FileWriter(csCopy.txt);
BufferedWriter bufw=new BufferedWriter(fileW);
打印程序运行异常信息
/*
打印程序异常信息。
*/
import java.io.*;
import java.text.*;
import java.util.*;
class ExceptionLog
{
public static void main(String[] args)
{
try{
int[] arr=new int[3];
//故意数组角标越界异常。
System.out.println(arr[3]);
}
catch(Exception e){
try{
//输出日期信息。
Date d=new Date();
//指定日期输出格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd,HH-mm-ss");
//将日期转化为字符串
String s=sdf.format(d);
//指定输出位置,此处会抛异常。
PrintStream ps=new PrintStream("Exception.log");
//打印日期。
ps.println(s);
//重新设置系统输出位置。
System.setOut(ps);
}
catch(Exception ex){
throw new RuntimeException("异常信息存储错误。");
}
//将追踪到的信息打印到指定的输出流
e.printStackTrace(System.out);
}
}
}
打印系统属性信息
import java.io.*;
import java.util.*;
class SystemInfo
{
public static void main(String[] args) throws Exception
{
//获取系统属性信息。
Properties pro=System.getProperties();
//打印系统属性信息。
pro.list(new PrintStream("SystemInfo.txt"));
}
}