處理流
當你用節點流的時候你會發現,它會頻繁的訪問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。