InputStrean字节流

读文件:(InputStream类)

int read();           读取一个字节数据,当返回-1是则读取完毕
int read(byte[] b);    将数据读取到字节数组中
int read(byte[] b,int off,int len);     从off开始,最多len长度,保存b
void close();        关闭
int available();      返回估计字节数
一般使用其子类FileInputStream(介质流,从本地文件读);构造方法:
      FileInputStream(File file);       FileInputStream(String name);
注:文件不存在,报错
 
在判断文件是否读完:
判断文件是否存在,然后判断文件是否为空(因为read并不会因文件为空而返回-1。* 如果存在且不为空,则读取
byte[] b = new byte[1024];
int len = 0;                         
while(len!=-1){
System.out.println( is.read(b));    //不用len接收,就会导致读取两遍(无法避免)
}
os.close();                      //关闭流
 
写文件:(OutputStream类)
void write(int c);    写入一个字节的数据
void write(byte[] but);     写入数组but的所有字节
void write(byte[] b,int off,int len);      从off开始,长度为len,输出
void close();      关闭;
一般使用其子类FileOutputStream(介质流,向本地文件写);构造方法:
       FileOutputStream(File file);       FileOutputStream(String name);
       FileOutputStream(String name,boolean add);           //add代表是否追加
注:文件不存在,创建;存在但是目录,报错
 
二进制文件的读写:
读:FileInputStream 的子类 DatalnputStream  其中有readUTF()方法能读utf-8的字符编码
写:FileOutputStream的子类 DataOutStream   其中有writObject()可以用来读对象
注:FileInputStream与FileOutputStream都是装饰流
示例(对象的序列化与反序列化):
被读写类需实现:implements Serializable接口
写:
OutputStream os = new FileOutputStream("c:\\data.dat");
DataOutputStream dos = new DataOutputStream(os);
dos.writeInt(stu.getSid());        // 写对象属性
dos.writeBoolean(stu.isFlag());
//直接写入类dos.writeObject(类名);  ObjectOutputStream dos = new ObjectOutputStream(os); 或XmlEncoder类的writeObject方法  
dos.flush();
dos.close();
os.close();
读:
使用readObject();再强转就能拿到对象
 
posted @ 2016-01-16 19:38  朱俊销  阅读(370)  评论(0编辑  收藏  举报