黑马程序员_Java基础6

来源:互联网 发布:c语言中 什么意思 编辑:程序博客网 时间:2024/05/20 19:47

------- android培训java培训、期待与您交流! ----------

PipedlnputStream / PipedOutputStream - 管道流
管道流通过结合线程使用,输入/输出流分别分配一个线程进行,一个线程负责读取,一个线程负责写入。
最好是输入输出流定义在不同的类中,类继承Runnable接口。
因为 PipedlnputStream 输入流的read方法是阻塞式的,那么当管道搭建好之后,如果读取流没有读到数据,会一直等待,直到PipedOutputStream输出流结束输出,读取流才停止读取。
构造函数:
PipedInputStream(PipedOutputStream out);
PipedOutputStream(PipedInputStream in);
常用方法:
connect(PipedInputStream in/ PipedOutputStream out) 输入/输入相连接

RandomAccessFile 随机访问文件
此类独具一格,既能读,又能写,但仍属于IO流体现一员。
此类底层操作的是字节数据,有个byte[]数组缓冲,通过指针可对此数组进行操作。
构造方法
RandAccessFile(File file, String mode)
RandAccessFile(String name, String mode)
通过此构造函数可知,RandomAccesFile有个局限性:只可操作File对象。
而且,此类有个操作模式:只读 "r";读写 "rw"
当只读r模式时:
    写入的方法无效;
当读写rw模式时:
    如果只读取,而指定文件如果不存在,不会创建指定文件,会报异常;
    如果要写入,而指定文件如果不存在,会自动创建一个文件后,进行写入。
常用方法:
int read();
String readLine();
Xxx readXxx()
write(Xxx x)   写入指定字节。此类的写入功能可直接修改/覆盖原有数据。这也算是它的不足之处,所以要插入数据的话,可以另寻他方。
插入原理:
1.累计插入数据+原始数据之和,扩增文件大小。
2.将指针移动到原始数据的末尾,一个个字节往扩容后的文件末尾移动。
3.定位插入点,将指定长度的数据从插入点开始写入。
writeXxx(Xx x);
特殊方法
seek(long pos) 调整指针位置,随意位置调整
skipBytes(int n) 跳过n字节来调整整指针,只能往下跳,不能往回跳

DataInputStream / DataOutputStream
专门用于操作基本数据类型数据的IO流对象。
构造方法:
DataInputStream(InputStream in);
DataOutputStream(OutputStream out);
这一对流的特点也就在于它很方便对基本类型数据的读取和写入。比如:
writeInt(int i);
writeDouble(double d);
writeChar(char c);
writeBoolean(boolean b);
对应的读取流方法:
int readInt();
double readDouble();
char readChar();
boolean readBoolean();
特别的方法:
writeUTF()此方法写入字符串时会采用utf-8编码的修改版进行写入。普通的转换流读取时会不正常,所以,如果采用了此方法写入的字符数据,必须使用对应的readUTF()方法进行读取。

ByteArrayInputStream / ByteArrayOutputStream
这一对流可以直接操作字节数组中的字节数据。
它们的特长是:它们不需要底层的流,也不需要关闭流。
它们操作的都是内存中的数组缓冲区的数据。
最最重要的好处是这个缓冲区会随着数据的不断写入而自动增长
输入流构造函数:
ByteArrayInputStream(byte[] in);
输出流构造函数:
ByteArrayOutputStream();

CharArrayInputStream / CharArrayOutputStream
这对IO流很类似上面的字节数组流,区别是这对IO流操作的是字符数组。

StringInputStream / StringOutputStream
这对IO流更类似上面的字符数组流,区别是这对IO流操作的是字符串数组。 

CharSet 字符编码
一个字节数据占8位二进制数
ISO8859-1:一个字符占1个字节
GBK :    一个字符占2个字节
UTF-8 :  一个字符占3个字节
常用方法:
Arrays.toString(byte[]) 将字节数组转换成字符串
Integer.toBinaryString(byte b) 将字节转换成二进制形式的字符串
byte b;b&255; 截取一个字节的二进制形式的后八位

------- android培训java培训、期待与您交流! ----------

详情请查看:http://edu.csdn.net/heima

原创粉丝点击