黑馬程式設計師Java培訓和Android培訓:I/O

打的去看海的豬發表於2011-07-31

    終於到第二階段了,聽說I/O是比較重要的部分,所以這部分打算花多點時間打基礎。磨刀不誤砍柴~~

1.File類

(1)是IO中唯一代表磁碟檔案本身資訊的類,而不是檔案中的內容

(2)定義了一些與平臺無關的方法來操作檔案,例如建立、刪除、重新命名

(3)java中的目錄被當做一種特殊的檔案被使用,list方法可以返回目錄中的所有子目錄和檔案

(4)在UNIX下的路徑分割符為(/),在doc下的分割符為(\),java可以正確處理Unix和doc下的路徑分隔符

另外還有以deleteOnExit  是推出後刪除

例項: 判斷某個檔案是否存在,存在側刪除,不存在則建立.

 

import java.io.*;

 public class File {

  public static void main(String[] args) {

       File f = new File("1.txt");

       if(f.exists()){

           f.delete();

       }else{

              try {

                  f.createNewFile();

              } catch (Exception e) {

                  e.printStackTrace();

              }

       }

//檔案各種資訊

       System.out.println("File name:"+f.getName());  

       System.out.println("File Path:"+f.getPath());

       System.out.println("File abs Path:"+f.getAbsolutePath());

       System.out.println("File Parent:"+f.getParent());

       System.out.println(f.exists()?"exist":"not exist");

       System.out.println(f.canRead()?"read":"not read");

       System.out.println(f.isDirectory()?"directory":"not directory");

       System.out.println("File last Modified:"+new Date(f.lastModified()));

    }

}

2. RandomAccessFile類

提供了眾多檔案訪問方法(操作檔案),支援隨機訪問,在隨機(相對順序而言)讀寫等長記錄格式的檔案時有很大的優勢

2中構造方法  一:只讀 二:可讀可寫

練習:往檔案中寫入三名員工的資訊,每個員工含有姓名和年齡兩個欄位,然後按照第二名,第一名,第三名的先後順序讀出員工資訊。

Employee.java

p lic class Employee {

    public String name =null;

   public int age =0;

    public static final int LEN = 8;

    public Employee(String name,int age){

       if(name.length()>LEN){

           this.name = name.s string(0, 8);

       }

       else{

           while(name.length()<LEN){

              name+="\";

       }

       this.name = name;

       this.age = age;

       }

    }

}

RandomFileTest.java

import java.io.RandomAccessFile;

public class RandomFileTest {

    public static void main(String[] args) throws Exception{

        Employee e1 = new Employee("zhangsan",23);

        Employee e2 = new Employee("lisi",24);

        Employee e3 = new Employee("wangwu",25);

        

        RandomAccessFile ra = new RandomAccessFile("employee.txt","rw");

        ra.writeChars(e1.name);

        ra.writeInt(e1.age);

        ra.writeChars(e2.name);

        ra.writeInt(e2.age);

        ra.writeChars(e3.name);

        ra.writeInt(e3.age);

        ra.close();

          String strName = null;

        raf.skipBytes(Employee.LEN*2+4);

        for(int i=0;i<Employee.LEN;i++){

            strName+=raf.readChar();

        }

        System.out.println(strName.trim()+":"+raf.readInt());

        raf.seek(0);

        strName="";

        for(int i=0;i<Employee.LEN;i++){

            strName+=raf.readChar();

        }

        System.out.println(strName.trim()+":"+raf.readInt());

      

        raf.skipBytes(Employee.LEN*2+4);

        strName="";

        for(int i=0;i<Employee.LEN;i++){

            strName+=raf.readChar();

        }

        System.out.println(strName.trim()+":"+raf.readInt());

        

        raf.close();

       }

}

3. 節點流:InputStream與OutputStream類:

FileInputStream指定的檔案必須是存在與可讀,OutputStream 不存在就建立,存在則覆蓋,但不能指定一個已經被其他程式開啟的檔案。

建立FileInputStream例項物件時,指定的檔案應當是存在和可讀的。建立FileOutputStream例項物件時,如果指定的檔案已經存在,這個檔案中的原來內容將被覆蓋清除

Java分節點流和過濾流兩大類

4. Reader和Writer

package CSDN.IOtest;

import java.io.*;

public class FileSream2 {

    public static void main(String[] args) throws IOException {

       FileWriter fileWriter = new FileWriter("hello.txt");

       fileWriter.write("www.itheima.com");

        fileWriter.close();

       char [] buf = new char[1024];

       FileReader fileReader = new FileReader("hello.txt");

              int len = fileReader.read(buf);

       System.out.println(new String(buf,0,len));

       fileReader.close();

    }

}

5、PipedInputSteam和PipedOutputSteam類

用於在應用程式中建立管道通訊,主要用來執行緒之間的通訊

PipedInputStream 類與PipedOutputStream類用於在應用程式中的建立管道通訊。

使用管道流類,可以實現各個程式模組之間的鬆耦合通訊

ByteArrayInputStream 和ByteArrayOutputStream,用於以IO流的方式來完成對位元組陣列內容的讀寫,來支援類似記憶體虛擬檔案或者記憶體映像檔案的功能。

StringReader類和 StringWriter類來以字元IO流的方式處理字串

 

 

這個知識點看的不是太明白,多做練習 

 

相關文章