java 流的转换_java 转换流 打印流 数据流

转换流

InputStreamReader 和 OutputStreamWriter

处理流

用于将字节流转化成字符流,字符流与字节流之间的桥梁

InputStreamReader 的作用是把 InputStream 转换成 Reader

OutputStreamWriter 的作用是把 OutputStream 转换成 Writer

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

更简单

不存在把字符流转换成字节流的转换流,因为没有必要

System.in 代表标准输入,即键盘输入,是 InputStream 的实

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 importjava.io.BufferedReader;2 importjava.io.BufferedWriter;3 importjava.io.FileNotFoundException;4 importjava.io.FileOutputStream;5 importjava.io.IOException;6 importjava.io.InputStream;7 importjava.io.InputStreamReader;8 importjava.io.OutputStreamWriter;9 importjava.io.UnsupportedEncodingException;10

11 public classTestInputStreamReader {12

13 public static voidmain(String[] args) {14 //任务需求,从键盘获取数据,写入磁盘文件15 //(3)提高读取效率

16 BufferedReader br = null;17 //(4)提高写入效率

18 BufferedWriter bw = null;19 try{20 //(1)数据源是标准的输入设备,键盘System.in

21 InputStream is =System.in;22 //(2)需要使用转换流,转换成字符流

23 InputStreamReader isr = new InputStreamReader(is,"gbk");24 br = newBufferedReader(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

控制台输入

405f7a19a97ec35d35c44c2aa04e2848.png

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

文本文件

e7c9706cd69d0a219d532b13aae54ac0.png

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

打印流

PrintStream和PrintWriter

PrintStream

1) PrintStream 提供了一系列的 print()和 println(),可以实现

将基本数据类型格式化成字符串输出。对象类型将先调用

toString(),然后输出该方法返回的字符串

2) System.out 就是 PrintStream 的一个实例,代表显示器

3) System.err 也是 PrintStream 的一个实例,代表显示器

4) PrintStream的输出功能非常强大,通常需要输出文本内容,

都可以将输出流包装成 PrintStream 后进行输出

5) PrintStream 的方法都不抛出 IOException

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

importjava.io.PrintStream;public classTestPrintStream {public static voidmain(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完成,

更简单

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 importjava.io.BufferedReader;2 importjava.io.BufferedWriter;3 importjava.io.FileNotFoundException;4 importjava.io.FileOutputStream;5 importjava.io.FileWriter;6 importjava.io.IOException;7 importjava.io.PrintStream;8 importjava.io.PrintWriter;9 importjava.util.Date;10

11 public classTestPrintStream {12 public static void main(String[] args) throwsIOException {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(newDate());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) 注意:只要关闭上层流即可

1563ff878dbf78ce7ce21c729f6fd94d.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 importjava.io.BufferedInputStream;2 importjava.io.BufferedOutputStream;3 importjava.io.BufferedWriter;4 importjava.io.DataInputStream;5 importjava.io.DataOutputStream;6 importjava.io.FileInputStream;7 importjava.io.FileNotFoundException;8 importjava.io.FileOutputStream;9 importjava.io.IOException;10

11 public classTestDateStream {12

13 public static void main(String[] args) throwsIOException {14 //write();

15 read();16 }17

18 //读数据的方法

19 public static void read() throwsIOException {20 //(1)数据源

21 FileInputStream fis = new FileInputStream("E:\\data.txt");22 //(2)提高读取效率

23 BufferedInputStream bis = newBufferedInputStream(fis);24 //(3)数据流 增加对java基本数据类型和String的处理

25 DataInputStream dis = newDataInputStream(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() throwsIOException {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

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

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

d70870e63dabeaf6b4bb01bd0669977a.png

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

读出来的数据

a181578964b3cfb0bfc8cac0d55952e3.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值