分類  >  Web前端 >

java IO完整版學習札記

tags:    時間:2013-12-11 10:45:53
java IO完整版學習筆記
原文出處:http://developer.51cto.com/art/201109/292225.htm

--->刪除文件
# String fileName="D:"+File.separator+"hello.txt"; 
#         File f=new File(fileName); 
#         if(f.exists()){ 
#             f.delete(); 
#         }else{ 
#             System.out.println("文件不存在"); 
#         } 
f.mkdir(); 
#         File f=new File(fileName); 
#         File[] str=f.listFiles();  //f.list

if(temp.isFile())
if(temp.isDirectory())
續傳文件
#         RandomAccessFile demo=new RandomAccessFile(f,"rw"); 
#         demo.writeBytes("asdsad"); 
位元組流 向文件中寫入字元串 
OutputStream out =new FileOutputStream(f); //追加;new FileOutputStream(f,true); 
讀文件
  FileInputStream input = new FileInputStream(temp);
          byte[] b = new byte[1024 * 5];
          while ( (len = input.read(b)) != -1)

字元流
#寫       Writer out =new FileWriter(f);   //追加 new FileWriter(f,true);
#         String str="hello"; 
#         out.write(str);

#讀       char[] ch=new char[100]; 
#         Reader read=new FileReader(f); 
#         int count=read.read(ch);  

將上面的位元組流和字元流的程序的最後一行關閉文件的代碼註釋掉,然後運行程序看看。你就會發現使用位元組流的話,文件中已經存在內容,但是使用字元流的時候,文件中還是沒有內容的,這個時候就要刷新緩衝區。

使用位元組流好還是字元流好呢? 答案是位元組流。首先因為硬碟上的所有文件都是以位元組的形式進行傳輸或者保存的  字元流開發方便

整個IO類中除了位元組流和字元流還包括位元組和字元轉換流。
OutputStreramWriter將輸出的字元流轉化為位元組流
InputStreamReader將輸入的位元組流轉換為字元流
但是不管如何操作,最後都是以位元組的形式保存在文件中的。將位元組輸出流轉化為字元輸出流

Writer out=new OutputStreamWriter(new FileOutputStream(file));  //將輸出的字元流轉化為位元組流

Reader read=new InputStreamReader(new FileInputStream(file)); 
# char[] b=new char[100]; 
#         int len=read.read(b);

以內容為輸出輸入目的地
ByteArrayInputStream 主要將內容寫入內容
ByteArrayOutputStream 主要將內容從內存輸出

管道流主要可以進行兩個線程之間的通信。
PipedOutputStream 管道輸出流
PipedInputStream 管道輸入流

# BufferedReader buf = new BufferedReader( 
#                 new InputStreamReader(System.in));

Scanner的小例子,從鍵盤讀數據 

SequenceInputStream主要用來將2個流合併在一起,比如將兩個txt中的內容合併為另外一個txt。下面給出一個實例:
# SequenceInputStream sis = new SequenceInputStream(input1, input2); 
#         int temp = 0; 
#         while((temp = sis.read()) != -1){ 
#             output.write(temp); 
#         } 

文件壓縮 ZipOutputStream類
#   ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream( 
#                 zipFile)); 
#         zipOut.putNextEntry(new ZipEntry(file.getName())); 
#         // 設置註釋 
#         zipOut.setComment("hello"); 
#         int temp = 0; 
#         while((temp = input.read()) != -1){ 
#             zipOut.write(temp); 
#         }

對象序列化就是把一個對象變為二進位數據流的一種方法。

推薦閱讀文章

Bookmark the permalink ,來源:互聯網