读取键盘录入
/*
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"));
}
}