黑马程序员-JAVA基础-IO流之流操作规律及读写转换流
------- android培训、java培训、期待与您交流!-------
在操作IO流时,常常会迷惑:流对象很多,不知道该使用哪一个?
一.流操作的基本规律:
通过三个明确来完成:
1、明确‘源’和‘目的’。
源:则使用输入流;InputStream 或者 Reader 。
目的:则使用用输出流;OutputStream 或者 Writer 。
2、操作的数据是否是纯文本。
是纯文本:则使用字符流。
不是纯文本:则使用字节流。
3、当体系明确后,再明确要使用哪个具体的对象,通过设备来进行区分。
源设备:内存,硬盘,键盘。
目的设备:内存,硬盘,控制台。
当完成以上三个明确,这可以很清楚的选择使用适应的流对象。
二.读写流转换:
例子:将键盘录入的数据保存到一个文件中。
首先:明确该处的源可以使用:InputStream或者Reader ;目的:使用OutputStream 或 Writer。
其次:数据是不是纯文本? 是,则使用Reader 和 Writer。
最后:源->设备:键盘。对应的对象是System.in ; 目的-> 设备:硬盘。一个文件则使用FileWriter。
import java.io.*; public class TransStreamDemo2 {public static void main(String[] args) throws IOException { // 键盘录入:BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in) ); // 输出方式:BufferedWriter bufw =new BufferedWriter( new FileWriter("D:\\TransStreamDemo2.txt") ) ;String line = null ; while((line = bufr.readLine()) != null) { // 当遇到 "over" 则停止录入。if ("over".equals(line))break ; bufw.write(line) ; bufw.newLine() ; }bufw.close() ; bufr.close() ;} }
因为: public static final InputStream in “标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。在这里我们可以知道 System.in 对应的是字节流,而我们使用的Reader 则是字符流,所以应该将System.in 转换成字符流。
InputStreamReader isr = new InputStreamReader(System.in) ;
通过上面的例子,可以知道字节流转换成字符流则可以使用 InputStreamReader 类构造方法,而将字符流转换成字节流则可以使用 OutputStreamWriter 类构造方法。
三.改变标准输入输出设备:
系统默认的标准输入和输出:
System.out 标准的输出设备,控制台。
System.in 标准的输入设备,键盘。
改变标准输入输出设备则可以使用System 类中的两个方法:
static void setIn( InputStream in) 重新分配“标准”输入流。
static void setOut(PrintStream out ) 重新分配“标准”输出流。
例子:改变异常信息存储方式: 异常处理日志信息。
需求:将程序报错的错误信息存储到文本。
1 public class ExceptionInfo { 2 public static void main(String[] args) throws IOException { 3 try { 4 int[] num = new int[2] ; 5 System.out.println(num[3]) ; 6 } 7 catch(Exception e) { 8 try { 9 // 增加时间: 10 Date d = new Date() ; 11 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ") ; 12 String s = sdf.format(d) ; 13 // 改变标准输出流。 14 PrintStream ps = new PrintStream("D:\\exception.log") ; 15 ps.println(s) ; 16 System.setOut(ps); 17 } 18 catch(IOException ex) { 19 20 } 21 e.printStackTrace(System.out) ; 22 } 23 } 24 }
黑马程序员-JAVA基础-IO流之流操作规律及读写转换流相关推荐
- 黑马 程序员——Java基础---IO(下)
黑马程序员--Java基础---IO(下) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供 ...
- 黑马程序员——Java基础--IO流(一)---File类以及其他流对象
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.File类 File类是将文件系统中的文件和文件夹封装成了对象.提供了更多的属性和行为可以对 ...
- 黑马程序员-JAVA基础-IO流之字符流和字符流缓冲区
------- android培训.java培训.期待与您交流!------- Java 的IO 流 是实现输入和输出的基础,Java 中把不同的输入.输出源抽象表述为"流" (S ...
- 黑马程序员-----Java基础-----IO流-3
-----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...
- 黑马程序员-JAVA基础-IO流中的装饰设计模式
------- android培训.java培训.期待与您交流!------- 装饰设计模式: 当想要对已有的对象进行功能增强时,可以定义类,将已有的对象传入,基于已有的功能,并提供加强功能.那么,自 ...
- 黑马 程序员——Java基础---流程控制
黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...
- 黑马程序员---java基础-Java之IO
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.概念 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Jav ...
- 黑马程序员-java基础8--IO流(一)
------- android培训.java培训.期待与您交流! ---------- @@day(18)IO字符流之FileWriter.FileReader******************** ...
- 黑马程序员--Java基础加强篇
开发工具使用 --------------------------------------------------------------------------------------------- ...
最新文章
- 艾伟也谈项目管理,IT项目管理的六种错误思维
- 取一个字符串中的数字
- Python应用实战-从pandas的角度来对比MySQL,教你如何更快更好的学习sql
- Fiddler抓包一键生成调用代码
- 从减少DNS查找来优化网站
- 四维的王坚和三维的阿里互联网汽车
- Windows server常见操作、问题
- 3.指定IP地址抓包
- opencv用python进行物体识别_教你用Python+opencv来识别物体的轮廓并标识显示
- ElasticSearch学习笔记(二)
- linux 报警级别,linux PMBus总线驱动设计分析
- 新手python的100个实战项目-实例分享 | 4个Python实战项目(一)
- logistic regression(二项 logistic 与 多项logistic )
- 2022 年牛客多校第五场补题记录
- 动态密码算法介绍与实现
- [转]高精度乘法计算
- Lock wait timeout exceeded; try restarting transaction
- GMS(Google Mobile Service)
- vue实现搜索功能的代码/实现搜索的程序
- 5V降压3.3V电路设计PW2058
热门文章
- su如何变成实体_不用建模就能生成地形,SU怎么办到的?
- LeetCode-笔记-394. 字符串解码
- js字符串的字典序_JavaScript通过字典进行字符串翻译转换的方法
- html前端开发是什么,web前端开发需要会什么
- 监控系统 Prometheus 和 Zabbix 对比
- 安装计算机过程中的注意事项,西门子step7安装过程中的注意事项
- python爬虫换电脑不能运行_python爬虫程序运行失败,求原因
- api1.7oracle,API 支持
- 必须为元素类型 association 声明属性 oftype。_CSS相关的选择器和属性介绍
- gdal java shp_【GDAL/OGR】利用GDAL/OGR读取shp文件并转换为json文件(Java版)