FileInputStream fileInputStream = new FileInputStream(new File("D:\\test1.txt"));
FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\test2.txt"));
byte[] buffer = new byte[1024];
int idx = 0;
while ((idx = fileInputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer翻譯社 0, idx);
}
fileInputStream.close();
fileOutputStream.close();
有時刻我們要列出目次下的檔案時,會針對某些檔名規則做檢核,這時候就能夠用FileFilter來處理:
- 第1行同樣用File dir = new File("D:\\testDir\\")建立檔案物件,只是此次帶入的參數是一個目錄路徑。
- 第3行用dir.isDirectory()判斷是否為目次,和上一個例子file.isFile()用法相同翻譯
- 第5行及第7行都是建樹目錄的語法,第5行是創立單層目次,也就是最後一層目次,第7行則會建立多層目錄,檔案地點路徑只要不存在該目錄,就會一層一層建立翻譯
- 第8-11行列出目次下所有檔案的檔名,起首用dir.listFiles()列出目次下的檔案,listFiles()會回傳一個類別為File的陣列,接著再用迴圈將陣列中的檔案檔名逐一列出。
File dir = new File("D:\\testDir\\");
// 判斷檔案是否為目次
System.out.println(dir.isDirectory());
// 建立單層目次
System.out.println(dir.mkdir());
// 建立多層目錄
System.out.println(dir.mkdirs());
// 列出目次下的檔案
File[] fileList = dir.listFiles();
for (int i = 0; i < fileList.length; i++) {
System.out.println(fileList[i].getName());
}
有檔案的操作,當然就會有目錄的操作,事實上目次物件在Java中也被視為一個File物件,因此用法和檔案操作極為類似,以以下出目錄部分和檔案分歧的用法:
- 第1行用File file = new File("D:\\test.txt")就可建立一個檔案物件,File須帶入一個字串參數,示意檔案的完全路徑及檔名翻譯這裡要稀奇注意『\』符號,由於『\』對Java而言是非凡符號,所以天成翻譯公司們必需在『\』前面再加上一個『\』透露表現現在這個『\』代表的是單純的文字,而非他在Java中的特殊意義。事實上所有的特殊符號我們都可以在前面加上『\』表示這個特殊符號代表的是文字翻譯而每個不同的作業系統也可能具有分歧的檔案分隔符號,像是windows功課系統中利用『\』來代表檔案分隔符號,是以我們為了讓程式可以或許適應各種作業系統,可以用File.separator來表示該作業系統的檔案分隔符號,例如第1行程式也可以改寫成第2行的寫法翻譯
- 第4行用file.exists()來判斷檔案是否存在,exists()會回傳布林值示意是不是存在。
- 第6行用file.createNewFile()來建樹新檔案,回傳布林值表是不是成功。
- 第7行用file.isFile()來判定是不是為檔案類型(也可能為目錄類型)。
- 第9-11行別離判斷了檔案的執行、讀、寫權限。
- 第13-15行印出了檔案的路徑及檔名翻譯getPath()可獲得完整檔名及路徑,getName()可取得檔名,getParent()則可取得上一層目次。
- 第17行用file.length()取得檔案巨細,單元為bytes。
- 第19行用file.lastModified()獲得檔案最後修改時間,掏出的數值為時間序號。
- 第21行用file.renameTo()將檔案移動,並傳回布林值表示是不是成功,renameTo()須帶入一個檔案參數表示檔案要移動的目的地。
- 第23行用file.delete()刪除檔案,一樣回傳布林值表示是不是成功。
File file = new File("D:\\test.txt");
File file2 = new File("D:" + File.separator + "test.txt");
// 判斷檔案是否存在
System.out.println(file.exists());
// 建立新檔
System.out.println(file.createNewFile());
// 判斷檔案是否為檔案
System.out.println(file.isFile());
// 判斷檔案權限
System.out.println(file.canExecute());
System.out.println(file.canRead());
System.out.println(file.canWrite());
// 取得檔案路徑及檔名
System.out.println(file.getPath());
System.out.println(file.getName());
System.out.println(file.getParent());
// 取得檔案大小(單位:bytes)
System.out.println(file.length());
// 取得檔案最後修改時間
System.out.println(new Timestamp(file.lastModified()));
// 檔案的移動
System.out.println(file.renameTo(new File("D:\\test2.txt")));
// 刪除檔案
System.out.println(file.delete());
FileFilter filter = new FileFilter(){
public boolean accept(File file) {
return file.getName().toUpperCase().endsWith(".TXT");
}
};
File[] fileList = dir.listFiles(filter);
for (int i = 0; i < fileList.length; i++) {
System.out.println(fileList[i].getName());
}
- 第1-5行天成翻譯公司們建立了一個FileFilter物件,FileFilter需要實作一個函式accept(),該函示傳入檢核的檔案物件,並回傳布林值暗示是否接受這個檔案,是以我們就可以在accept()函式中撰寫天成翻譯公司們但願的檢核劃定規矩,以上例而言,我們接管副檔名為.TXT的檔案。
- 第6-9行我們一樣印出目錄下的檔案,此次分歧的是我們在listFiles()時帶入方才建立的FileFilter參數,是以此次天成翻譯公司們取得的檔案列表就一定是.TXT副檔名的檔案,不契合這個法則的檔案就不會被我們取出了。
檔案的操作是天成翻譯公司們在設計系統過程當中經常會運用的,java.io提供了一些類別讓我們處理檔案,以下為一個範例:
檔案的複製較為複雜,需要使用FileInputStream和FileOutputStream來做輸入及輸出,以下:
- 第1行及第2行宣佈了一個FileInputStream及一個FileOutputStream物件,別離帶入需要輸入的檔案和需要輸出的檔案翻譯FileInputStream和FileOutputStream離別繼承InputStream及OutputStream,做為串流的輸入及輸出,而FileInputStream和FileOutputStream就是專門設計做為檔案輸入及輸出的類別。
- 第3行宣告了一個byte型態的陣列,做為複製過程當中的緩衝區利用。陣列的巨細通常會以8的倍數為主,因為在複製檔案時,也是以每個位元組做為複製單位,而每一個位元組所需的空間就是8byte。這邊事實上陣列的巨細可以肆意調劑,然則若設定太小,會造成每次可以或許作業的空間有限,因此必需反複功課很多次才能將檔案複製完成,在檔案較大時會顯得較沒有效率,若是設定太大,則會鋪張記憶體空間,若是硬體前提不是太好,就有可能影響整系統統運作,是以緩衝區巨細的拿捏也需要視實際需求調整翻譯
- 第4行宣告了一個整數做為緩衝區容量的標識表記標幟翻譯
- 第5-7行就把檔案從FileInputStream讀出至緩衝區並輸出至FileOutputStream。起首第5行用read()並帶入緩衝區物件將FileInputStream讀出,read()會回傳一整數透露表現緩衝區目前已使用的位置,若沒有任何資料則會回傳-1,是以我們用while迴圈判定讀出的索引值不為-1時,也就是有資料時,進行緩衝區的輸出。第6行用write()將緩衝區的資料輸出,帶入的三個參數劃分為緩衝區物件、緩衝區入手下手索引值及竣事索引值,是以我們帶入0和剛剛取得的整數索引值,表示從0輸出到剛剛讀入的索引值。
- 第8-9行記得要關閉串流,以避免檔案被程式利用而沒法做其他操作。
來自: https://blog.xuite.net/jane17512001/PenguinDesign/116288112-%E6%AA%94%E6%A1%88%E6%93%8D%E4%BD%9C(jav有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931