1. 程式人生 > >java 輸出輸入流

java 輸出輸入流

首先說下位元組流和字元流的區別:

java 位元組流與字元流的區別 http://blog.csdn.net/cynhafa/article/details/6882061

結論:字元流使用了緩衝區(因此需關閉程式如out.close()或者out.flush()),而位元組流沒有使用緩衝區。

所有的檔案在硬碟或在傳輸時都是以位元組的方式進行的,包括圖片等都是按位元組的方式儲存的,而字元是隻有在記憶體中才會形成,所以在開發中,位元組流使用較為廣泛。

流分類:
    1.Java的位元組流
        InputStream是所有位元組輸入流的祖先,而OutputStream是所有位元組輸出流的祖先。
    2.Java的字元流
        Reader是所有讀取字串輸入流的祖先,而writer是所有輸出字串的祖先。
        InputStream,OutputStream,Reader,writer都是抽象類。所以不能直接new 

我寫這個純屬是做筆記,有不對的地方歡迎指正。本人小白一枚...............

首先上一個例項

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import org.apache.log4j.Logger;

/**
 *
 * @author M-Y
 */
public class FileTest {
    public static final Logger logger =  Logger.getLogger(FileTest.class);
    public static void main(String[] args) throws FileNotFoundException, IOException{
        //例項化一個檔案物件
        File mydir = new File("D:"+File.separator+"fileTest");
        //如果檔案不存在,則新建一個資料夾
        if(!mydir.exists()){
            mydir.mkdir();
        }
        System.out.println("新建資料夾名稱");
        System.out.println(mydir.getName());
        System.out.println("獲取資料夾絕對路徑");
        System.out.println(mydir.getAbsolutePath());
        System.out.println("路徑分隔符");
        System.out.println(mydir.separator);
        //在上面這個資料夾下面建立一個檔案
        File myfile = new File("D:"+File.separator+"fileTest"+File.separator+"file.txt");
        //如果檔案不存在,則建立一個檔案
        if(!myfile.exists()){
            try {
                myfile.createNewFile();
            } catch (IOException ex) {
               logger.info(ex.getMessage());
               ex.printStackTrace();
            }
        }
        //寫入資料到檔案 true表示保留檔案原有資料,新資料追加至結尾處
        FileOutputStream out = new FileOutputStream(myfile,true);
        out.write("向檔案中寫入資料".getBytes("utf-8"));
        out.close();
        //從檔案中讀取資料
        FileInputStream input = new FileInputStream(myfile);
        byte[] buffer = new byte[1000];
        int b = input.read(buffer, 0, 1000);
        System.out.println("寫入檔案的內容");
        System.out.println(new String(buffer,0,b));
        File[] files = mydir.listFiles();
        System.out.println("通過目錄來訪問目錄下的這個檔案-檔名-檔案最後一次修改時間");
        for(File file : files){
            System.out.println(file.getName());
            System.out.println(new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(file.lastModified()));
        }
    }
}
建議:如果想詳細瞭解可以看看JDK API我這裡就不詳細介紹了有興趣的可以訪問:點選開啟連結