黑马程序员——System类常用方法及流对象操作规律
来源:互联网 发布:最优化理论 课程 推荐 编辑:程序博客网 时间:2024/06/01 08:00
——- android培训、java培训、期待与您交流! ———-
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。
由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用
读取键盘录入。
System.out:对应的是标准的输出设备。控制台
System.in:对应的标准的输入设备。键盘
通过键盘录入数据
当录入一行数据后,就将该行进行打印(打印为大写)。
如果录入的事over,那么停止录入。
示例:
import java.io.*;class TransStreamDemo{ public static void main(String[] args) throws IOException { 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); } /* int by=in.read(); int by1=in.read(); //char by2=in.read();会报错 int by2=in.read(); System.out.println(by+"; "+(char)by1+"; "+by2); //返回的是ascII码 System.out.println('\r'+0);//13 System.out.println('\n'+0);//10 */ }}
通过键盘录入数据,当录入一行数据后,就将该行进行打印(打印为大写)。
其实就是readLine方法
readLine方法就是字符流BufferedReader类中的方法。
而键盘录入的read方法是字节流InputStream.
可以将字节流转成字符流在使用字符流缓冲区的readLine方法呢?
inputStreamReader
字节通向字符的桥梁
OutputStreamWriter
通过字符转向字节
import java.io.*;class TransStreamDemo2{ public static void main(String[] args) throws IOException { //InputStream in=System.in; //将字节流对象转换成字符流对象。使用转换流 //InputStreamReader isr=new InputStreamReader(in); ///通过字符流缓冲区进行对他进行装饰 //BufferedReader bufr =new BufferedReader(isr); //键盘录入最常见写法 BufferedReader bufr= new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); //OutputStream out=System.out; //OutputStreamWriter osw=new OutputStreamWriter(out); //BufferedWriter bufw=new BufferedWriter(osw); String line =null; while((line =bufr.readLine())!=null) { if("over".equals(line)) break; bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } bufr.close(); }}
常见的输入和输出示例:
示例1
import java.io.*;class TransStreamDemo3{ public static void main(String[] args) throws IOException { //InputStream in=System.in; //将字节流对象转换成字符流对象。使用转换流 //InputStreamReader isr=new InputStreamReader(in); ///通过字符流缓冲区进行对他进行装饰 //BufferedReader bufr =new BufferedReader(isr); //键盘录入最常见写法 /* BufferedReader bufr= new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("e:\\helloword.txt"))); 将键盘内容录入存入一个文件中 */ //把文件打印到控制台 BufferedReader bufr= new BufferedReader(new InputStreamReader(new FileInputStream("e:\\课件.txt"))); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); //OutputStream out=System.out; //OutputStreamWriter osw=new OutputStreamWriter(out); //BufferedWriter bufw=new BufferedWriter(osw); String line =null; while((line =bufr.readLine())!=null) { if("over".equals(line)) break; bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } bufr.close(); }}
示例2
import java.io.*;class TransStreamDemo4{ public static void main(String[] args) throws IOException { //System.setIn(new FileInputStream("e:\\helloword.txt")); System.setOut(new PrintStream("e:\\zz.txt")); BufferedReader bufr= new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); //将键盘内容录入存入一个文件中 //把文件打印到控制台 /* BufferedReader bufr= new BufferedReader(new InputStreamReader(new FileInputStream("e:\\课件.txt"))); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); */ //OutputStream out=System.out; //OutputStreamWriter osw=new OutputStreamWriter(out); //BufferedWriter bufw=new BufferedWriter(osw); String line =null; while((line =bufr.readLine())!=null) { if("over".equals(line)) break; bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } bufr.close(); }}
将程序中抛出的异常文件保存在文件夹中
示例如下
//将异常信息保存在文件中
import java.io.*;import java.util.*;//Dteimport 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) { try { //显示日期 Date d=new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String s=sdf.format(d); PrintStream ps=new PrintStream("e:\\excepiton-4.log"); ps.println(s); System.setOut(ps); //将异常保存在文本文件中,限定 //System.setOut(new PrintStream("e:\\excepiton.log"));//限定保存在文件夹 //e.printStackTrace(System.out);//默认是控制台 //e.printStackTrace(System.out); //e.printStackTrace(new PrintStream("e:\\question.txt")); //将异常保存在文本文件中。 } catch (Exception ex) { throw new RuntimeException("日志文件创建失败"); } e.printStackTrace(System.out); } }}/*实际建立日志信息工具包log4j*/
文件夹示例:
static Properties getProperties()
确定当前的系统属性。
将 getProperty(String) 方法使用的当前系统属性集合作为 Properties 对象返回。如果没有当前系统属性集合,则先创建并初始化一个系统属性集合。
调用示例:
import java.util.*;import java.io.*;class SystemInfo{ public static void main(String[] args) throws IOException { Properties prop=System.getProperties(); //System.out.println(prop); prop.list(new PrintStream("sysinfo.txt")); }}
保存的文件夹显示的结果:
流对象的基本操作规律:
通过三个明确来完成:
1,明确源和目的
源:输入流 InputStream Reader.
目的:输出流 OutputStream Writer.
2.操作的数据是否是纯文本。
是:字符流
不是;字节流
3.当体系明确后,再明确要使用哪个具体的对象。
通过设备来进行区分:
设备包括内存,硬盘,键盘。
源设设备:内存,硬盘,键盘。
目的设备:内存,硬盘,控制台。
举例演示思路:
1.将一个文本文件中数据存储到另一个文件中,复制文件
源:使用读取流InputStream Reader
文本文件:Reader
明确要使用体系中的哪个对象。
明确设备:硬盘,上的一个文件
Reader体系中可以操作文件的 FileReader
是否需要提高效率:是:加入Reader体系中的缓冲区BufferedReader
FileReader fr=new FileReader(“a.txt”);
BufferedReader bufr=new BufferReader(fr);
目的:OutputStream Writer目的是不是纯文本呢.是:Writer设备:硬盘,一个文件。Writer体系中可以操作文件的对象FileWriter.是否需要提高效率:是。加入Writer体系中缓冲区 BufferWriterFileWriter fw=new FileWriter("b.txt");BufferWriter bufw=new BuferWriter(fw);
2.需求:将键盘录入的数据保存到文件中
这个需求中有源和目的都存在
那么分别分析
源:InputStream Reader
是不是纯文本?是:Reader
设备:键盘。对应的对象是System.in:不是选择Reader吗 System.in对应的不是字节流吗?为了操作键盘的文本数据方便。将其转成字符流按照字符串操作最方便。所以既然明确了reader,那么就将ystem.in转成字符流用到了Reader体系中的转换流InputStreamReaderInputStreamReader isr=new InputStreamReader(Syetem.in);需要提高效率吗?需要 BufferReaderBufferedReader bufr=newBufferedReader(isr);目的;OutputStream Writer是否是纯文本?是!Writer。设备:硬盘。一个文件。使用FileWriter.FileWriter fw =new FileWriter("c.txt");只需要提高效率吗?BufferedWriter bufw=new BufferedWriter(fw);
扩展一下,想要把录入的文件按照指定的编码表(utf-8),将数据存到文件中。目的:OutputStream Writer是否存文本?是:Writer设备:硬盘。一个文件。使用FileWriter但是FileWriter是使用的默认编码表。GBK.但是要存储时,需要加入指定编码表。而指定的编码表只有转换刘可以指定。所以要使用的对象是OutputStreamWriter.而该转换刘对象要接收一个字符流,而且还可以操作文件的字节输出流FileOutStreamOutputStreamWriter osw=new PutputStreamWriter(new FileOutputStream(d.txt),"UTF-8");//FileWriter Fw=new FileWriter("c.txt");需要提高效率吗?需要。BufferedWriter bufw=new BufferedWriter(osw);字符和字节之间的桥梁,通常涉及到字符编码转换时需要用到转换流。
示例
将一个文本数据打印到控制台上
import java.io.*;class TransS{ public static void main(String[] args) throws IOException { //InputStream in=System.in; //将字节流对象转换成字符流对象。使用转换流 //InputStreamReader isr=new InputStreamReader(in); ///通过字符流缓冲区进行对他进行装饰 //BufferedReader bufr =new BufferedReader(isr); //键盘录入最常见写法 /* BufferedReader bufr= new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("e:\\helloword.txt"),"UTF-8")); 将键盘内容录入存入一个文件中 默认GBK */ //把文件打印到控制台 BufferedReader bufr= new BufferedReader(new InputStreamReader(new FileInputStream("e:\\课件.txt"))); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); //OutputStream out=System.out; //OutputStreamWriter osw=new OutputStreamWriter(out); //BufferedWriter bufw=new BufferedWriter(osw); String line =null; while((line =bufr.readLine())!=null) { if("over".equals(line)) break; bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } bufr.close(); }}
- 黑马程序员——System类常用方法及流对象操作规律
- 黑马程序员——流操作规律
- 黑马程序员——转换流与流操作规律
- 黑马程序员学习笔记——流操作规律
- 黑马程序员—— System、Runtime对象
- 对象——常用操作及方法
- 黑马程序员_IO流——规律
- 黑马程序员——java基础拾遗之IO流(一) 常用类及方法
- 黑马程序员------流操作的基本规律
- 黑马程序员----流操作的基本规律
- 黑马程序员_IO_流操作规律
- 黑马程序员_85_IO流的操作规律
- 黑马程序员—System类
- 黑马程序员—String类常用方法
- 黑马程序员——线程的生命周期及常用方法
- 黑马程序员——Java基础_IO流之常用流对象及编码
- 黑马程序员——Java IO流(二)之流操作规律总结、File类、Properties类、序列流等
- 黑马程序员——java基础IO流概述、字符流、字节流、流操作规律
- mtk android 4.4 audio framework 代码分析(未完成)
- Android 平台上的 ARP 和 ARP欺骗
- 安装和升级--基础--许可证信息--前言
- 《机器学习实战》(二)k-近邻算法(KNN)
- Bootstrap组件之输入框组
- 黑马程序员——System类常用方法及流对象操作规律
- Ionic 在Mac上使用模拟器无法安装应用
- hdu1142 - A Walk Through the Forest(SPFA+记忆化搜索)
- coding.net
- 图形系统总结
- CSS基础-8CSS样式-字体
- FragmentPagerAdapter的工作流程
- Java内存管理原理及内存区域详解
- 黑马程序员------oc之面向对象特性 封装、多态、继承等