A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

mortonwyj

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© mortonwyj 初级黑马   /  2015-7-24 12:28  /  2510 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
学了io流,但感觉。。。有点乱,求大神帮我理清一点,谢啦

最佳答案

查看完整内容

IO流复习(总结): 格式: 特点(用处): 核心代码: InputStream和OutPutStream: 特点:这是字节流的两个超类,用来读取和写入字节文件 核心代码: int read(),int read(byte[] b),int read(int[],int off,int len) void write(int b),void write(byte[] b),void write(byte[] b,int off, int len),void flush() 注意点:这里的int和byte其实是一样的。 FileInputStream和FileOutputStream: 特点:刚才超类的实现类 核心 ...

3 个回复

倒序浏览
IO流复习(总结):
格式:
特点(用处):
核心代码:

InputStream和OutPutStream:
特点:这是字节流的两个超类,用来读取和写入字节文件
核心代码:
int read(),int read(byte[] b),int read(int[],int off,int len)
void write(int b),void write(byte[] b),void write(byte[] b,int off, int len),void flush()
注意点:这里的int和byte其实是一样的。

FileInputStream和FileOutputStream:
特点:刚才超类的实现类
核心代码:
int read()
void write(byte b)或void write(int i)
注意点:在读取文件时,一定要保证文件是存在并且可读的

BufferedInputStream和BufferedOutputStream
特点:自带缓冲
核心代码:
int read(), void write(int i)

Reader和Writer:
特点:字符流的超类

BufferedReader+FileReader和BufferedWriter+FileWriter
特点:带缓冲的字符流
核心代码:
String readLine(),void write(String str),void newLine()

LineNumberReader
特点:Reader的实现类
核心代码:
LineNumberReader lr = new LineNumberReader(new FileReader("Example01.java");
String line = lr.readLine();
fw.write(lr.getLineNumber()+":"+line);

InputStreamReader和OutputStreamWriter
特点:Reader的实习类,转换类,会涉及到编码方式
核心代码:
InputStreamReader isr = new InputStreamReader(new FileInputStream("xxx.txt"));
BufferedReader br = new BufferedReader(isr)
注意点:
转换后还是要用BUfferedReader来进行包装

ObjectInputStream和ObjectOutputStream
特点:用来实现对象的序列化,即把对象格式化为直接数据写入到硬盘。
注意点:对某个对象进行序列化时,必须保证带对象实现了Serializable接口
核心代码:
objectoutputstream oos = new ObjectOutputStream(new FileOutputStream("feriosa.txt");
oos.writeObject(new Person());


DataInputStream和DataOutputStream
特点:用于储存对象的成员数据(成员变量,成员函数),但这些成员数据只能是基本数据类型
核心代码:
它接收的是BufferedInputStream
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream...)))
dos.writeByte(Byte b),dos.writeChar(Char c),dos.writeBoolean(true),dos.writeUTF(String str)


PrintStream
特点:可以将基本数据类型和引用数据类型的对象格式化成字符串后输出,其输出主要依靠print()和println()方法,
它的构造方法里接受的是FileOutputStream和一个boolean
核心代码:
PrintStream ps = new PrintStreawm(new FileOutputStream("feriosa.txt"),true);
ps.print(Object o);


System.in\out\err
特点:标准流,in为InputStream,out和err是PrintStream。是属于控制台的三个方法
重定向的三个静态方法:(都是System类的)void setIn(InputStream in) void setOut(PrintStream out) void setErr(PrintStream out)
核心代码:
System.setIn(new FileINputStream("..."));
System.setOut(new PrintStream("...");
//System.in是字节流,要转换(读取键盘输入的字符
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))


PipedInputStream和PipedOutputStream:
特点:使得对个线程之间能够通过IO流实现数据的传输
核心代码:
//建立连接:pis.connect(pos);
//传入PrintStream,使得打印的数据传入到pos中(说白了就是用bufferedReader读,用PrintStream写)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))---读取键盘
PrintStream ps = new PrintStream(pos)
ps.println(br.readLine())


ByteArrayInputStream+ByteArrayOutputStream和CharArrayReader+CharArrayWriter
特点:都是现将数据临时存入缓冲区
但我一直不明白他们和BufferedInputStream或BufferedReader区别在哪里。。。
核心代码:
特点是new对象的时候,不需要传参
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bos.write(int i_)---是将数据存入了缓冲区
如果要读缓冲区存的数据,new FileOutputStream("...").write(bos.toByteArray())

如果是读的话,就是传入数组,然后read()


SequenceInputStream:
特点:查单词得知sequence:n.[数]数列,序列;顺序;连续;片断插曲
所以它的特点就是对这些流进行合并
核心代码:
SequenceInputStream sis = new SequenceInputStream(fis1,fis2)
int sis.read()或者int sis.read(Byte[] b)
如果超过两个流的合并,就要用到Vector以及Enumeration枚举
vector.addElement(FileInputStream fis)
Enumereation e = vector.elements()

ok,这就是全部的IO流

fis.available()---返回可获得的字节长度

评分

参与人数 1黑马币 +3 收起 理由
mortonwyj + 3 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 AllenIverson 于 2015-7-24 15:13 编辑

   I/O总结(1)

  I/O总结(2)




回复 使用道具 举报
I/O总结(1)

  I/O总结(2)

评分

参与人数 1黑马币 +1 收起 理由
mortonwyj + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马