Java流 学习笔记

来源:互联网 发布:linux中oracle启动监听 编辑:程序博客网 时间:2024/05/17 01:57

java.io 包里定义了多个流类型。

所有流类型都继承自以下四种抽象流类型。


UTF-16  一个字符两个字节。

/****************

节点流与处理流的区别


常见节点流


分别是文件,内存中的数组,一个String,线程和线程通信的Pipe


继承自InputStream 的流类


InputStream 基本方法

int  read( );   //  读取一个字节并以整数返回(0~255),到输入流末尾返回-1

int read( byte[ ]  buffer)  throws IOException ;

// 读取buffer长度的数据,装进缓冲区 buffer

//  返回实际读取的字节数,如果读取前已到输入流结尾则返回-1

// read 方法都记录已经读到的位置。

void close( ) throws IOException  //  关闭流释放内存资源

System.in  是InputStream的一个子对象,是键盘输入流。

/********************

OutputStream  常用类


OutputStream 内常用方法


close方法不输出缓冲区的数据,直接关闭。


Reader和Writer 和以上方法类似,具体查API文档。java里char 占两字节。



int ch;  

xxReader a=new xxReader("docpath");   

ch=a.read( ); 

System.out.println((char)ch);

 // 可以这么打印字符。


继承自OutputStream的FileOutputStream

FileOutputStream a=new FileOutputStream("D:/javatest/a.txt");  //当磁盘没有此文件时,新建此文件。


常见处理流 (处理其他节点流的类)


#Buffering是缓冲流

“套接”在相应节点流上,一次读很多,防止频繁小规模读写效率低,损害硬盘。

可以在缓冲区中标记位置,可以用mark,reset 等。


#转换流

Concerting between bytes and character

InputStreamReader i= new InputStreamReader(System.in);  //先包装成字符读取,这里调用的就是转换流。

BufferedReader b=new BufferedReader( i ); // 把转化流再包装成缓冲流。


#数据流


可直接从中读取int double等类型。

Example:


这里的ByteArrayOutputStream是节点流,写入一个byte[ ] ,然后通过  .toByteArray( );  获得byte数组。

DataOutputStream 是这里讲的数据类型的包装流。

#print流


如图设置处理流,可以调用System.setOut( ); 设置系统输出的位置,默认为命令行输出,这里向NewOut文件输出。

System.out 是PrintStream类型。


#Object流 --   处理流

接口 Serializable , 类实现这个接口才能被转化为字节流。

这个接口为标记性接口,不需要重写方法。


writeObject( ); 

readObject( ); // 这两个方法读写一个对象。


Externalizable 接口,继承自Serializable接口,重写两个方法,自己控制对象的序列化过程。


transient 关键字。 修饰成员变量: transient int k = 15;  

被transient修饰的变量在序列化时不予考虑,即当做没有。

0 0
原创粉丝点击