处理流
当你用节点流的时候你会发现,它会频繁的访问i/o流的次数,为避免这样而损耗我们的硬盘 这时我们就用处里流。那到底什么是处里流呢?通俗的说就是包在别的流外面的流,类似于包在管道外面的管道。
public class mm{
public static void main(String[ ] args){
FileInputStream input =new FileInputStream("d:\\java\\input.java“);
BufferInputStream buffer=new BufferInputStream(input);
int c=0;
system.out.println(buffer.read()); //这里读取的是数目,如果要读取内容的话强制转换一下(char)buffer.reader()
buffer.mark(100); //从第100个开始读取
for(int i=0;i<10 && (c=buffer.read())!=-1;i++){
system.out.print((char)c+""); //这里强制转换成char类型读取里面的内容
}
buffer.reset();//重置到第100开始读取
for(int i=0;i<10 && (c=buffer.read())!=-1;i++){
system.out.print((char)c+"");
}
}
public class nn{
public static void main (String[] args){
BufferWriter writer=new BufferWriter(new Writer(d:\\java\\nn.java));//new BufferWriter 里面放的参数是一个writer对象
//这里就类似与在new Writer的外面套了层BufferWriter流处理解决里层接口只能一个一个字符的传输
BufferReader reader=new BufferReader(new Reader("d:\\java\\jj.java"));
int c=0;
String d=null;
for(int i=0;i<100;i++){
d=String.valueof(Math.random);//得到随机数
writer.write(d);//将得到的随机数写入文件
writer.newLine; //换行.
}
writer.flush(); //对于输出的缓冲流,写出的数据会现在内存缓冲,使用flush可以将内存的数据立即写出
}
while((d=reader.readLine())!=null){ //读取每一行是一个String类型
system.out.print(d);
}
reader.close();
writer.close();
}
文中代码省略了try-catch。
假设我们想写入一段long类型的数字,但是你又感觉转型特别麻烦。这里我们就可以用到处理流里面的Date--Stream,这个流里面有writeDouble(double n)方法。
下面举个简单地例子方便我们理解:
public class dataTest{
public static void main (String[ ] args){
ByteArrayOutputStream byteOut=new ByteArrayOutputStream();
DataOutputStream dataOut=new DataOutputStream(byteOut);
dataOut.writeDouble(Math.random); //写入一个double类型的随机数
dataOut.writeBoolean(true); //在最后一行写入boolean类型的true
System.out.print(dataOut);
ByteArrayInputStream byteInput=new ByteArrayInputStream(byteOut.toByteArray());
DataInputStream dataInput=new DataInputStream(byteInput);
System.out.print(dataInput.readDouble()); //这里遵循先进后出规则
System.out.print(dataInput.readBoolean());
dataInput.close();
dataOut.close();
}
}
注意上面的代码一律忽略了try-catch。