java 转换流 打印流 数据流
转换流
InputStreamReader 和 OutputStreamWriter
处理流
用于将字节流转化成字符流,字符流与字节流之间的桥梁
InputStreamReader 的作用是把 InputStream 转换成 Reader
OutputStreamWriter 的作用是把 OutputStream 转换成 Writer
存在将字节流转换成字符流的转换流,因为字符流操作文本
更简单
不存在把字符流转换成字节流的转换流,因为没有必要
System.in 代表标准输入,即键盘输入,是 InputStream 的实
例
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException; public class TestInputStreamReader { public static void main(String[] args) {
//任务需求,从键盘获取数据,写入磁盘文件
//(3)提高读取效率
BufferedReader br = null;
//(4)提高写入效率
BufferedWriter bw = null;
try {
//(1)数据源是标准的输入设备,键盘System.in
InputStream is = System.in;
//(2)需要使用转换流,转换成字符流
InputStreamReader isr = new InputStreamReader(is,"gbk");
br = new BufferedReader(isr);
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\systein.txt")));
//(5)写入磁盘文件
String line = null;
while(!"over".equals((line=br.readLine()))) {//键盘输入over表示结束
bw.write(line);
bw.newLine();
bw.flush();
}
} catch (UnsupportedEncodingException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
//(6)关闭
if(bw != null) {
try {
bw.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if(br != null) {
try {
br.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
}
控制台输入
------------------------------------------------------------------------------------------------------------------------------------------------------
文本文件
----------------------------------------------------------------------------------------------------------------------------------------
打印流
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("哈哈哈");
}
}
PrintWriter
1) PrintStream 的对应字符流,功能相同,方法对应。
2) PrintWriter 的方法也不抛出 IOException
3) 复制文件时可以使用PrintWriter代替BufferedWriter完成,
更简单
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Date; public class TestPrintStream {
public static void main(String[] args) throws IOException {
PrintWriter ps = new PrintWriter(new FileOutputStream("D:\\print.txt"));
//无需类型转换,自动转成String类型
ps.println("hello");
ps.println(11);
ps.println(11.12);
ps.println(new Date());
ps.flush();
ps.close(); //只能写入字符串类型
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\a.txt"));
bw.write("哈哈哈");
//bw.write(234.4);
//bw.write(new Date());
bw.close();
}
}
数据流
DataInputStream 和 DataOutputStream
1) 提供了可以存取所有 Java 基础类型数据(如:int,double
等)和 String 的方法。
2) 处理流,只针对字节流,二进制文件
3) 输入流链和输出流链
4) 注意:只要关闭上层流即可
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class TestDateStream { public static void main(String[] args) throws IOException {
//write();
read();
} //读数据的方法
public static void read() throws IOException {
//(1)数据源
FileInputStream fis = new FileInputStream("E:\\data.txt");
//(2)提高读取效率
BufferedInputStream bis = new BufferedInputStream(fis);
//(3)数据流 增加对java基本数据类型和String的处理
DataInputStream dis = new DataInputStream(bis);
//(4)读数据-----读数据的顺序与写数据的顺序一致
System.out.println(dis.readInt());
System.out.println(dis.readBoolean());
System.out.println(dis.readUTF());
System.out.println(dis.readDouble());
//关闭
dis.close();
} public static void write() throws IOException {
/*//(1)目的地
FileOutputStream fos = new FileOutputStream("E:\\data.txt");
//(2)缓冲流提高写入效率
BufferedOutputStream bos = new BufferedOutputStream(fos);
//(3)数据流,增加对java基本数据类型和String的处理
DataOutputStream dos = new DataOutputStream(bos);*/
//三行并作一行
DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("E:\\data.txt")));
//(4)写入数据
dos.writeInt(99);
dos.writeBoolean(true);
dos.writeUTF("qwer");
dos.writeDouble(22.7);
//(5)关闭流
if (dos != null) {
dos.close();
}
}
}
---------------------------------------------------------------------------------------------------------------------
写入的文件------字节 二进制文件 人看不懂 但机器看得懂
--------------------------------------------------------------------------------------------------------------------
读出来的数据
---------------------------------------------------------------------------------------------------------------------------
java 转换流 打印流 数据流的更多相关文章
- Java基础教程——打印流
打印流 打印流可以把原本输出到控制台的信息输出到文件中.PrintStream是字节打印流(还有个对应的字符打印流是PrintWriter,这里不涉及) System类中有个变量: public fi ...
- IO流的Properties集合,序列化流与反序列化流,打印流及commons-IO
内容介绍 Properties集合 序列化流与反序列化流 打印流 commons-IO Properties类 Properties类介绍 Properties 类表示了一个持久的属性集.Proper ...
- 6.5(java学习笔记)其他流(字节数组流,数据流,对象流,打印流)
一.字节数组流 之前使用输入输出流的操作的对象是文件,而这里字节数组流操作的对象是内存,内存可以看做是一个字节数组. 使用字节数组流读写就可以看做是从内存A到内存B的读写,对象时内存即字节数组. 1. ...
- Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)
1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...
- java 中的打印流
package cn.zhou; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.F ...
- 系统学习 Java IO (十一)----打印流 PrintStream
目录:系统学习 Java IO---- 目录,概览 PrintStream 类可以将格式化数据写入底层 OutputStream 或者直接写入 File 对象. PrintStream 类可以格式化基 ...
- JAVA笔记12__字节、字符缓冲流/打印流/对象流/
/** * !!:以后写流的时候一定要加入缓冲!! * 对文件或其它目标频繁的读写操作,效率低,性能差. * 缓冲流:好处是能更高效地读写信息,原理是将数据先缓冲起来,然后一起写入或读取出来. * * ...
- Properties-转换流-打印流-序列化和反序列化-Commons-IO工具类
一.Properties 类(java.util) 概述:Properties 是一个双列集合;Properties 属于map的特殊的孙子类;Properties 类没有泛型,propert ...
- 34 io流-- 打印流和对象流
概述 io流分为字符流和字节流,具体分类相见下图 字符流:char 一些基本文本的数据传输 字节流:byte 图片.视频等用文本查看器查看不了的文件都是二进制文件,只能用字节流传输,使用字符流cp的看 ...
随机推荐
- 使用vue-cli开发过程中如何把jQuery设置为全局
说明:vue-cli是vue快速构建项目的命令行式开发模式. vue主要针对数据层,更多的操作在数据上,很少在DOM上,偶尔也会需要操作DOM,偶尔也会用到JQ插件,下面简单说下如何在使用vue-cl ...
- APP接口做什么?
提交数据:GET POST 有的接口是获取数据和提交数据相结合形式:如检测更新下载
- vue自制switch滑块
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 《.NET之美》之程序集
一.什么是程序集(Assembly)? 经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为·dll或者是·exe的格式,但是要注意,它们跟普通意义上的WI ...
- Oracle 11g数据库详细安装过程
1.Oracle 11g下载 官方网址为:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.h ...
- loadrunner 场景设计-设计与实践
场景设计-设计与实践 by:授客 QQ:1033553122 以lr 11.0 自带Web Tours为例,进行以下测试 说明:以下测试仅供演示,学习设计思路 A.确定系统组件 简单B/S架构:Cli ...
- 安卓开发中strings.xml的使用
为了使用方便也是为了代码规范化,我们都将文字信息放在res-values-strings.xml中, 因为开发中需要用到将文字的换行,百度了一下,可以将文字段信息直接在strings.xml文件中换行 ...
- Vue父组件接收不到子组件$emit事件的原因分析
通常有两种情况: 事件名称不全是小写.事件名称要求全小写. 不是父子关系.这里的父子关系是严格的父子关系,祖孙关系也不行.只能一层一层触发,这在写树形组件时,很容易掉坑里.
- python常用模块之re模块(正则)
python种的re模块常用的5种方法,分别是re.match re.search re.findall re.split re.sub. 在介绍五种方法之前,需要介绍一下正则的基础. . ...
- 简单整理关于C#和Java的区别
相信每个程序猿都有自己最喜欢的编程语言,然而对于编程语言似乎形成一条独特的鄙视链,就如Java和C#常常两边的开发者都是相互鄙视,然后他们一起共同鄙视全世界最好的编程语言——PHP 哈哈,但是其实我想 ...