java I/O流
输入流(读取数据的流)
BufferedInputStream---继承--->FileInputStream--继承--->InputStream------>
(1)字节流操作中文数据不是特别的方便,所以就出现了转换流。
转换流的作用就是把字节流转换字符流来使用。
(2)转换流其实是一个字符流
字符流 = 字节流 + 编码表
a. 字节输入流
InputStram
read();
read(byte b[]);
read(byte b[], int off, int len);
skip(long n);
available();
close();
InputStream fis=new FileInputStream("D:\\1.txt");
int by=0;
while((by=fis.read())!=-1)
{
System.out.print((char)by);
}
fis.close();
FileInputStream: 继承InputStream
方法:
FileInputStream(String name);
FileInputStream(File file);
FileInputStream(FileDescriptor fdObj);
open(String name);
read();
read(byte b[]);
read(byte b[], int off, int len);
skip(long n);
available();
close();
FileInputStream fis=new FileInputStream("D:\\1.txt");
int by=0;
while((by=fis.read())!=-1)
{
System.out.print((char)by);
}
fis.close();
b. 字符输入流
Writer
abstract class Writer implements Appendable, Closeable, Flushable
应使用它们的子类来创建实体对象
子类:
| CharArrayReader | 从字符数组读取的输入流 |
| BufferedReader | 缓冲输入字符流 |
| PipedReader | 输入管道 |
| InputStreamReader | 将字节转换到字符的输入流 |
| FilterReader | 过滤输入流 |
| StringReader | 从字符串读取的输入流 |
| LineNumberReader | 为输入数据附加行号 |
| PushbackReader | 返回一个字符并把此字节放回输入流 |
| FileReader | 从文件读取的输入流 |
FileReader----继承---->InputStreamReader
FileReader fd=new FileReader("D:\\1.txt");
int i=0;
while((i=fd.read())!=-1)
{
System.out.print((char)i);
}
c. 缓冲区输入流
BufferedReader
InputStream fis=new FileInputStream("D:\\1.txt");
BufferedReader w=new BufferedReader(new InputStreamReader(fis));
String s=null;
while((s=w.readLine())!=null)
{
System.out.println(s);
}
BufferedInputStream 继承FilterInputStream
InputStream fis=new FileInputStream("D:\\1.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
int s=0;
while((s=bis.read())!=-1)
{
System.out.print((char)s);
}
d.内存输入流(特殊流) 需要先写再读
ByteArrayInputStream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 写数据
for (int x = 0; x < 10; x++) {
baos.write(("hello" + x).getBytes());
}
ByteArrayInputStream bais=new ByteArrayInputStream(baos.toByteArray());
int s=0;
while((s=bais.read())!=-1)
{
System.out.print((char)s);
}
CharArrayStream
CharArrayWriter baos = new CharArrayWriter();
String str="asdfgasgretfgertgergasdrg";
// 写数据
for (int x = 0; x < 2; x++)
{
baos.write(str.toCharArray());
}
CharArrayReader bais=new CharArrayReader(baos.toCharArray());
int s=0;
while((s=bais.read())!=-1)
{
System.out.print((char)s);
}
StringReader
StringWriter baos = new StringWriter();
String str="asdfgasgretfgertgergasdrg";
// 写数据
for (int x = 0; x < 2; x++)
{
baos.write(str);
}
StringReader bais=new StringReader(baos.toString());
int s=0;
while((s=bais.read())!=-1)
{
System.out.print((char)s);
}
e. 数据输入流
DataInputStream
// 创建数据输入流对象
DataInputStream dis = new DataInputStream(new FileInputStream("dos.txt"));
// 读数据
byte b = dis.readByte();
short s = dis.readShort();
int i = dis.readInt();
long l = dis.readLong();
float f = dis.readFloat();
double d = dis.readDouble();
char c = dis.readChar();
boolean bb = dis.readBoolean();
// 释放资源
dis.close();
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(l);
System.out.println(f);
System.out.println(d);
System.out.println(c);
System.out.println(bb);
f.转换输入流(字节转字符)
InputStreamReader
InputStream is = new FileInputStream("D:\\1.txt");
InputStreamReader isr = new InputStreamReader(is, "GBK");
int i = 0;
while ((i=isr.read())!=-1)
{
System.out.print((char)i);
}
g. 打印输入流(只能写不能读)
java I/O流的更多相关文章
- 【转】输入/输出流 - 深入理解Java中的流 (Stream)
基于流的数据读写,太抽象了,什么叫基于流,什么是流?Hadoop是Java语言写的,所以想理解好Hadoop的Streaming Data Access,还得从Java流机制入手.流机制也是JAVA及 ...
- 理解Java中字符流与字节流的区别
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- Java Io 字符流
Java Io 字符流包含: 1. InputStreamReader 它是由byte流解析为char流,并且按照给定的编码解析. 2. OutputStreamWrite 它是char流到byt ...
- mybatis oracle java.sql.SQLException: 流已被关闭问题
/** * 按照页码取值(从current_page页开始,每页page_size条) * @param key * @param params * @param current_page * @pa ...
- Java IO包装流如何关闭?
问题: (1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自动调用被包装的流的close()方吗? (2)如果按顺序关闭流,是从内层流到外层流关闭还是从外层到内存关闭? 问题(1)解释: ...
- java 笔记(4) —— java I/O 流、字节流、字符流
Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节.JavaIO中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据 ...
- java的IO流
java的IO流继承四大抽象类分别是字节流 inputStream outputStream与字符流 read write.怎么理解记忆很重要. 直接连接读写对象的是结点流,例如对文件读取字节类的名字 ...
- Java基础——IO流
今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...
- Java API —— IO流( FileInputStream & FileOutputStream & BufferedInputStream & BufferedOutputStream )
1.IO流概述 · IO流用来处理设备之间的数据传输 · 上传文件和下载文件 · Java对数据的操作是通过流的方式 · Java用于操作流的对象都在IO包中 2.IO ...
- 【Java】IO流简单分辨
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827509.html Java的IO流体系十分庞大,并且体系层次稍复杂,很容易记混或记错.在此,我把平时经常用 ...
随机推荐
- C# 文章导航
1. C#相关文章 1.1 C# 基础(一) 访问修饰符.ref与out.标志枚举等等 1.2 C# 基础(二) 类与接口 1.3 C# DateTime日期格式化 1.4 C# DateTime与时 ...
- 开源一个跨平台运行的服务插件 - TaskCore.MainForm
本次将要很大家分享的是一个跨平台运行的服务插件 - TaskCore.MainForm,此框架是使用.netcore来写的,现在netcore已经支持很多系统平台运行了,所以将以前的Task.Main ...
- angular2系列教程(六)两种pipe:函数式编程与面向对象编程
今天,我们要讲的是angualr2的pipe这个知识点. 例子
- 源码分析netty服务器创建过程vs java nio服务器创建
1.Java NIO服务端创建 首先,我们通过一个时序图来看下如何创建一个NIO服务端并启动监听,接收多个客户端的连接,进行消息的异步读写. 示例代码(参考文献[2]): import java.io ...
- PHP中PDO事务的使用方法
事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操 ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- 获取 dhcp IP 过程分析 - 每天5分钟玩转 OpenStack(91)
前面我们已经讨论了 DHCP agent 的配置以及 namespace 如何隔离 dnsmasq 服务,本节将以 cirros-vm1 为例分析获取 DHCP IP 的详细过程. 在创建 insta ...
- angluarjs2项目生成内容合并到asp.net mvc4项目中一起发布
应用场景 angular2(下文中标注位NG2)项目和.net mvc项目分别开发,前期采用跨域访问进行并行开发,后期只需要将NG2项目的生产版本合并到.net项目. NG2项目概述 ng2项目采用的 ...
- 2016/12/31_Python
今天学习主要内容: Python: 1.with语句(补充昨天的文件操作) 用with打开的文件在脚本结束会自动关闭,以防普通打开方式忘记关闭文件连接 语法: with open("demo ...
- MySQL 优化之 MRR (Multi-Range Read:二级索引合并回表)
MySQL5.6中引入了MRR,专门来优化:二级索引的范围扫描并且需要回表的情况.它的原理是,将多个需要回表的二级索引根据主键进行排序,然后一起回表,将原来的回表时进行的随机IO,转变成顺序IO.文档 ...