黑马程序员_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培训、期待与您交流! ----------
详情请查看:
- 黑马程序员_Java基础6
- 黑马程序员_java基础
- 黑马程序员_java基础
- 黑马程序员_java 基础
- 黑马程序员_java基础
- 黑马程序员_Java基础
- 黑马程序员_java基础
- 黑马程序员_java基础
- 黑马程序员_java基础
- 黑马程序员_Java基础
- 黑马程序员_java基础
- 黑马程序员_java基础
- 黑马程序员_java基础
- 黑马程序员_Java基础
- 黑马程序员_java基础
- 黑马程序员_Java基础
- 黑马程序员_java基础
- 黑马程序员_java基础
- 表达式树的建立
- I/O复制文件
- 在用户空间加载和卸载驱动
- sql 生成菜单列表形菜单(作为笔记记录在这里)
- 一行代码延续了一个站长的梦想
- 黑马程序员_Java基础6
- Behavior,Trigger,TriggerAction深度解析
- Oracle Data Pump 工具系列:使用 %U 和 filesize 参数将大数据拆分成小文件导出
- 这样做简历,HR会争着要你
- [Struts2异常]关于发生Struts配置异常:Unable to find parent packages struts-default.xml的解决方案
- Java与C/C++有什么区别
- android实现左右上下滚动
- WinForm - ListView +imageList显示图片
- 多屏互动技术标准DLNA与Airplay