JFileChooser和FileFilter的使用,以及Java RandomAccessFile用法

來源:互聯網
上載者:User

標籤:參數   用法   eset   移動   儲存   directory   buffere   length   資料   

今天學習前輩的一個p2p下載的原始碼,其中遇見了兩個小問題,上網進行了百度,找到了答案,隨手記錄一下,以便於以後翻看。

1.首先自訂了一個檔案下載的主介面,包括了建立任務、暫停任務、繼續任務、刪除任務,點擊建立任務後需要彈出一個Jframe內建的JFileChooser,進行檔案選擇,並且自訂過濾器進行檔案的篩選。

JFileChooser filechooser = new JFileChooser();//建立檔案選取器
filechooser.setCurrentDirectory(new File("."));//設定目前的目錄
filechooser.setAcceptAllFileFilterUsed(false);
//顯示所有檔案
filechooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) {
return true;
}
public String getDescription() {
return "所有檔案(*.*)";
}
});
//顯示JAVA源檔案
filechooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File f) { //設定可用的檔案的尾碼名,可以自訂為.ava  .xml等
if(f.getName().endsWith(".java")||f.isDirectory()){
return true;
}
return false;
}
public String getDescription() {
return "JAVA來源程式(*.java)";
}
});
//可以反覆使用setFileFilter方法設定JFileChooser的選擇類型

2.Java RandomAccessFile用法 

在進行檔案下載的時候,沒有使用InputStream與outStream,而是使用了並不熟悉的RandomAccessFile,所上網搜尋找到其相關的概念,以及對檔案讀寫操作的許可權控制。

RandomAccessFile是用來訪問那些儲存資料記錄的檔案的,你就可以用seek( )方法來訪問記錄,並進行讀寫了。這些記錄的大小不必相同;但是其大小和位置必須是可知的。但是該類僅限於操作檔案。

RandomAccessFile不屬於InputStream和OutputStream類系的。實際上,除了實現DataInput和DataOutput介面之外(DataInputStream和DataOutputStream也實現了這兩個介面),它和這兩個類系毫不相干,甚至不使用InputStream和OutputStream類中已經存在的任何功能;它是一個完全獨立的類,所有方法(絕大多數都只屬於它自己)都是從零開始寫的。這可能是因為RandomAccessFile能在檔案裡面前後移動,所以它的行為與其它的I/O類有些根本性的不同。總而言之,它是一個直接繼承Object的,獨立的類。

基本上,RandomAccessFile的工作方式是,把DataInputStream和DataOutputStream結合起來,再加上它自己的一些方法,比如定位用的getFilePointer( ),在檔案裡移動用的seek( ),以及判斷檔案大小的length( )、skipBytes()跳過多少位元組數。此外,它的建構函式還要一個表示以唯讀方式("r"),還是以讀寫方式("rw")開啟檔案的參數 (和C的fopen( )一模一樣)。它不支援唯寫檔案。

只有RandomAccessFile才有seek搜尋方法,而這個方法也只適用於檔案。BufferedInputStream有一個mark( )方法,你可以用它來設定標記(把結果儲存在一個內部變數裡),然後再調用reset( )返回這個位置,但是它的功能太弱了,而且也不怎麼實用。

以上兩個問題是個人閱讀代碼過程中遇到問題後,在網上搜尋找到的相關的概念,以及代碼執行個體,僅僅用來個人學習使用。

 

JFileChooser和FileFilter的使用,以及Java RandomAccessFile用法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.