java笔记-IO流-流操作

来源:互联网 发布:linux 32位 x86 编辑:程序博客网 时间:2024/06/06 06:14

读取键盘输入(单个字节读取)

循环打印键盘输入,当接收到“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"));}}


0 0
原创粉丝点击