博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 转换流 打印流 数据流
阅读量:4364 次
发布时间:2019-06-07

本文共 6697 字,大约阅读时间需要 22 分钟。

转换流

InputStreamReader 和 OutputStreamWriter

处理流
用于将字节流转化成字符流,字符流与字节流之间的桥梁
InputStreamReader 的作用是把 InputStream 转换成 Reader
OutputStreamWriter 的作用是把 OutputStream 转换成 Writer

存在将字节流转换成字符流的转换流,因为字符流操作文本

更简单
不存在把字符流转换成字节流的转换流,因为没有必要
System.in 代表标准输入,即键盘输入,是 InputStream 的实

1 import java.io.BufferedReader; 2 import java.io.BufferedWriter; 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.InputStreamReader; 8 import java.io.OutputStreamWriter; 9 import java.io.UnsupportedEncodingException;10 11 public class TestInputStreamReader {12 13     public static void main(String[] args) {14         //任务需求,从键盘获取数据,写入磁盘文件15         //(3)提高读取效率16         BufferedReader br = null;17         //(4)提高写入效率18         BufferedWriter bw = null;19         try {20             //(1)数据源是标准的输入设备,键盘System.in21             InputStream is = System.in;22             //(2)需要使用转换流,转换成字符流23             InputStreamReader isr = new InputStreamReader(is,"gbk");24             br = new BufferedReader(isr);25             bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\systein.txt")));26             //(5)写入磁盘文件27             String line = null;28             while(!"over".equals((line=br.readLine()))) {
//键盘输入over表示结束29 bw.write(line);30 bw.newLine();31 bw.flush();32 }33 } catch (UnsupportedEncodingException e) {34 // TODO 自动生成的 catch 块35 e.printStackTrace();36 } catch (FileNotFoundException e) {37 // TODO 自动生成的 catch 块38 e.printStackTrace();39 } catch (IOException e) {40 // TODO 自动生成的 catch 块41 e.printStackTrace();42 }finally {43 //(6)关闭44 if(bw != null) {45 try {46 bw.close();47 } catch (IOException e) {48 // TODO 自动生成的 catch 块49 e.printStackTrace();50 }51 }52 if(br != null) {53 try {54 br.close();55 } catch (IOException e) {56 // TODO 自动生成的 catch 块57 e.printStackTrace();58 }59 }60 }61 }62 }
View Code

控制台输入

------------------------------------------------------------------------------------------------------------------------------------------------------

文本文件

----------------------------------------------------------------------------------------------------------------------------------------

 打印流

PrintStream和PrintWriter

PrintStream

1) PrintStream 提供了一系列的 print()和 println(),可以实现
将基本数据类型格式化成字符串输出。对象类型将先调用
toString(),然后输出该方法返回的字符串
2) System.out 就是 PrintStream 的一个实例,代表显示器
3) System.err 也是 PrintStream 的一个实例,代表显示器
4) PrintStream的输出功能非常强大,通常需要输出文本内容,
都可以将输出流包装成 PrintStream 后进行输出
5) PrintStream 的方法都不抛出 IOException

import java.io.PrintStream;public class TestPrintStream {    public static void main(String[] args) {        PrintStream ps = System.out;//显示器        //PrintStream ps=System.err;        ps.println(123);        ps.println("哈哈哈");    }}
View Code

 

PrintWriter

1) PrintStream 的对应字符流,功能相同,方法对应。
2) PrintWriter 的方法也不抛出 IOException
3) 复制文件时可以使用PrintWriter代替BufferedWriter完成,
更简单

1 import java.io.BufferedReader; 2 import java.io.BufferedWriter; 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.FileWriter; 6 import java.io.IOException; 7 import java.io.PrintStream; 8 import java.io.PrintWriter; 9 import java.util.Date;10 11 public class TestPrintStream {12     public static void main(String[] args) throws IOException {13         PrintWriter ps = new PrintWriter(new FileOutputStream("D:\\print.txt"));14         //无需类型转换,自动转成String类型15         ps.println("hello");16         ps.println(11);17         ps.println(11.12);18         ps.println(new Date());19         ps.flush();20         ps.close();21         22         //只能写入字符串类型23         BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\a.txt"));24         bw.write("哈哈哈");25         //bw.write(234.4);26         //bw.write(new Date());27         bw.close();28     }29 }
View Code

 

数据流

DataInputStream 和 DataOutputStream

1) 提供了可以存取所有 Java 基础类型数据(如:int,double
等)和 String 的方法。
2) 处理流,只针对字节流,二进制文件
3) 输入流链和输出流链
4) 注意:只要关闭上层流即可

1 import java.io.BufferedInputStream; 2 import java.io.BufferedOutputStream; 3 import java.io.BufferedWriter; 4 import java.io.DataInputStream; 5 import java.io.DataOutputStream; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException;10 11 public class TestDateStream {12 13     public static void main(String[] args) throws IOException {14         //write();15         read();16     }17     18     //读数据的方法19     public static void read() throws IOException {20         //(1)数据源21         FileInputStream fis = new FileInputStream("E:\\data.txt");22         //(2)提高读取效率23         BufferedInputStream bis = new BufferedInputStream(fis);24         //(3)数据流 增加对java基本数据类型和String的处理25         DataInputStream dis = new DataInputStream(bis);26         //(4)读数据-----读数据的顺序与写数据的顺序一致27         System.out.println(dis.readInt());28         System.out.println(dis.readBoolean());29         System.out.println(dis.readUTF());30         System.out.println(dis.readDouble());31         //关闭32         dis.close();33     }34     35     public static void write() throws IOException {36         /*//(1)目的地37         FileOutputStream fos = new FileOutputStream("E:\\data.txt");38         //(2)缓冲流提高写入效率39         BufferedOutputStream bos = new BufferedOutputStream(fos);40         //(3)数据流,增加对java基本数据类型和String的处理41         DataOutputStream dos = new DataOutputStream(bos);*/42         //三行并作一行43         DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("E:\\data.txt")));44         //(4)写入数据45         dos.writeInt(99);46         dos.writeBoolean(true);47         dos.writeUTF("qwer");48         dos.writeDouble(22.7);49         //(5)关闭流50         if (dos != null) {51             dos.close();52         }53     }54 }
View Code

---------------------------------------------------------------------------------------------------------------------

写入的文件------字节 二进制文件 人看不懂 但机器看得懂

--------------------------------------------------------------------------------------------------------------------

读出来的数据

---------------------------------------------------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/bfcs/p/10418685.html

你可能感兴趣的文章
51nod 1278 相离的圆
查看>>
程序媛,坚持这几个好习惯让你越来越美
查看>>
如何在本地运行查看github上的开源项目
查看>>
类成员函数模板特化
查看>>
十个利用矩阵乘法解决的经典题目
查看>>
sublime text3
查看>>
WPF 反编译后错误处理
查看>>
varnish基础
查看>>
3.3-3.9 周记
查看>>
博客换肤
查看>>
HDU 5025Saving Tang Monk BFS + 二进制枚举状态
查看>>
Web Magic 总体架构
查看>>
Scikit-Learn机器学习入门
查看>>
完美解决IE8有两个进程的问题
查看>>
jq的链式调用.end();
查看>>
不要怂,就是GAN (生成式对抗网络) (五):无约束条件的 GAN 代码与网络的 Graph...
查看>>
单击浏览器右上角的X弹出提示窗口
查看>>
BZOJ1734: [Usaco2005 Feb]Aggressive cows 愤怒的牛
查看>>
开始python之旅
查看>>
Python进阶06 循环对象
查看>>