Java基礎知識之IO(1)

來源:互聯網
上載者:User

標籤:file   javaio   

IO中主要的類和介面

File、InputStream、OutputStream、Reader、Writer、Serialzable介面

File類

File類應用的小例子

import java.io.File;import java.io.IOException;public class FileDemo {    public static void main(String[] args) {        //指定檔案路徑和名稱        String path = "D:"+File.separator+"1.txt";        //執行個體化檔案類        File file = new File(path);        //判斷是否為路徑        System.out.println("是否為路徑:"+file.isDirectory());        //判斷檔案是否存在        if(file.exists()){            System.out.println("檔案存在!");            file.delete();//刪除檔案        }else{            System.out.println("檔案不存在,但是已經建立。。。");            try {                file.createNewFile();//建立檔案,可能拋出異常            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}

列出一個指定目錄下的所有檔案夾,及檔案夾內部的檔案夾

import java.io.File;public class FileDemo2 {    private static File f;    private static File[] fs;    public static void main(String[] args) {        String path = "D:"+File.separator+"Android.7z";//指定目錄        fun(path);//列出該目錄下的所有子目錄,及子目錄內容    }    public static void fun(String s){        f = new File(s);//執行個體化File類        if(f.isDirectory()){//判斷是否為路徑            fs = f.listFiles();//列出            for(File t:fs){                System.out.println(t);                if(t.isDirectory()){                    fun(t.toString());                }            }        }else{            System.out.println(f);        }    }}

File類只能對一個檔案本身進行操作,若想對檔案內容進行操作,需要RandomAccessFile類

RandomAccessFile

使用RandomAccessFile類進行檔案讀寫操作

import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;public class Demo2 {    public static void main(String[] args) throws IOException {        write("這裡示範檔案的讀寫操作","d:"+File.separator+"1.txt");        System.out.println(read("d:"+File.separator+"1.txt"));    }    //內容寫入檔案,會從頭開始覆蓋原始內容    public static void write(String s,String path) throws IOException{        File file = new File(path);        //執行個體化RandomAccessFile執行個體,指定操作模式為“讀寫”模式,該模式下,若檔案不存在,則自動建立        RandomAccessFile rfile = new RandomAccessFile(file, "rw");        rfile.write(s.getBytes());//以位元組形式寫入        rfile.close();    }    //讀出檔案內容    public static String read(String path) throws IOException{        File file = new File(path);        //執行個體化RandomAccessFile執行個體,指定操作模式為“讀寫”模式,該模式下,若檔案不存在,則自動建立        RandomAccessFile rfile = new RandomAccessFile(file, "r");        int len = (int)file.length();//得到檔案的大小,以位元組形式        byte[] ss = new byte[len];//根據檔案大小聲明位元組數組大小        for(int i=0;i<len;i++){//迴圈讀取每一個位元組            ss[i]=rfile.readByte();        }        rfile.close();        //調用String類的構造,產生新字串        return new String(ss);    }}
位元組流和字元流

1、位元組流
OutputStream類用於位元組的輸出
InputStream類用於位元組的讀入
2、字元流
Writer類用於字元的輸出
Reader類用於字元的讀入
這裡的輸出,讀入是相對於我們大家寫的程式而言,在程式中將資料寫到程式外,叫輸出;相反,從程式外得到資料供程式使用,叫讀入;
在示範之前呢,先規範下Java中IO操作的基本步驟:
1、使用File類找到一個檔案
2、使用位元組流或字元流的子類為OutputStream、InputStream、Writer、Reader進行執行個體化
3、進行讀寫操作
4、關閉流

OutputStream

輸出資料執行個體

import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;public class FileOutputStreamDemo {    public static void main(String[] args) throws IOException {        //檔案路徑,要確保改路徑存在        String path = "E:"+File.separator+"javaio"+File.separator+"FileOutputStream.txt";        //使用File類找到檔案        File file = new File(path);        //執行個體化OutputStream類        OutputStream out  = new FileOutputStream(file,true);//加入參數true表示可以在檔案內容後追加內容        //進行輸出操作,向檔案中寫入資料時,\r\n表示換行        out.write(("\r\n"+"這是FileOutputStream示範執行個體").getBytes());        //關閉流        out.close();    }}
InputStream

讀入資料執行個體

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;public class FileInputStreamDemo {    public static void main(String[] args) throws IOException {        //檔案路徑        String path = "E:"+File.separator+"javaio"+File.separator+"FileOutputStream.txt";        //執行個體化檔案        File file = new File(path);        //執行個體化InputStream        InputStream in = new FileInputStream(file);        //讀入資料        int len = (int)file.length();//檔案所佔位元組數        byte[] bytes = new byte[len];//儲存空間        in.read(bytes);//得到資料        System.out.println(new String(bytes));//輸出        //關閉流        in.close();    }}
Writer

輸出資料執行個體

import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.Writer;public class FileWriterDemo {    public static void main(String[] args) throws IOException {        //檔案路徑        String path = "E:"+File.separator+"javaio"+File.separator+"FileWriter.txt";        //執行個體化檔案        File file = new File(path);        //執行個體化Writer類對象        Writer writer = new FileWriter(file,true);        //輸出資料        writer.write("這是FileWriter示範執行個體  "+"\r\n");        //關閉流        writer.close();    }}
Reader

讀入資料執行個體

import java.io.File;import java.io.FileReader;import java.io.IOException;import java.io.Reader;public class FileReaderDemo {    public static void main(String[] args) throws IOException {        // 檔案路徑        String path = "E:" + File.separator + "javaio" + File.separator+ "FileWriter.txt";        // 執行個體化檔案        File file = new File(path);        //執行個體化Reader執行個體        Reader r = new FileReader(file);        //讀入資料        int len = (int)file.length();//檔案大小        char[] cbuf = new char[len];//儲存空間        len = r.read(cbuf);//讀入資料,返回資料長度        System.out.println(len);        System.out.println(new String(cbuf,0,len));        //關閉流        r.close();    }}

說明下OutputStream和Writer的區別:
OutputStream在操作檔案時,直接將位元組內容寫入檔案,而Writer會先把字元寫入緩衝區,然後寫入檔案,若將上面Writer的例子中的“流關閉”動作去掉,可以發現,檔案中根本不會有內容出現。實際上,電腦內部的資料存放區形式都是位元組形式的,所以個人感覺位元組流可以搞定一切資料形式。

好了,今天到這裡吧。。。

Java基礎知識之IO(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.