1. 程式人生 > >RandomAccessFile(隨即讀取)操作檔案有4種模式:"r"、"rw"、"rws" 或 "rwd"

RandomAccessFile(隨即讀取)操作檔案有4種模式:"r"、"rw"、"rws" 或 "rwd"


'r' 以只讀方式開啟。呼叫結果物件的任何 write 方法都將導致丟擲 IOException
"rw" 開啟以便讀取和寫入。如果該檔案尚不存在,則嘗試建立該檔案。
"rws" 開啟以便讀取和寫入,對於 "rw",還要求對檔案的內容或元資料的每個更新都同步寫入到底層儲存裝置。
"rwd"   開啟以便讀取和寫入,對於 "rw",還要求對檔案內容的每個更新都同步寫入到底層儲存裝置。

JDK 1.6上面寫的每次write資料時,"rw"模式,資料不會立即寫到硬碟中;而“rwd”,資料會被立即寫入硬碟。如果寫資料過程發生異常,“rwd”模式中已被write的資料被儲存到硬碟,而“rw"則全部丟失。

  1. /* 
  2. 這類不算是IO體系中的子類。 
  3. 而是直接繼承Object 
  4. 但是它是IO包中的成員,因為它具備讀和寫的功能。 
  5. 能完成讀寫的原理是內部封裝了位元組輸入流和輸出流。 
  6. 而且內部還封裝了一個數組,通過指標對陣列的元素進行操作。 
  7. 可通過getFilePointer獲取指標位置。 
  8. 也可通過seek改變指標的位置。 
  9. 通過建構函式可以看出,該類只能操作檔案。 
  10. 操作檔案有4種模式:"r"、"rw"、"rws" 或 "rwd" 
  11. 如果模式為只讀r。則不會建立檔案,而是會去讀取一個已經存在的檔案,如果讀取的檔案不存在則會出現異常。 
  12. 如果模式為rw讀寫。如果檔案不存在則會去建立檔案,如果存在則不會建立。 
  13. 可以實現多執行緒下載!因為seek可以調節指標,這樣可以開啟多個執行緒,來寫相同間隔的資料。
     
  14. *public class Day19_05 {

        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    //        test_RandomAcessFile_1();
            test_RandomAcessFile_2();
        }

        //seek()設定檔案指標,呼叫寫入方法,會覆蓋指標位置開始的資料
        public static void test_RandomAcessFile_2(){
            
            RandomAccessFile raf1 = null;
            try {
                raf1 = new RandomAccessFile("E:\\abc.txt","rw");
                raf1.seek(2);
                raf1.write("QQ".getBytes());
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                
                try {
                    if(raf1 != null)
                       raf1.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        
        //讀取D:\\abc.txt檔案、寫入E:\\abc.txt檔案
        public static void test_RandomAcessFile_1(){
            RandomAccessFile raf1 = null;
            RandomAccessFile raf2 = null;
            try {
                raf1 = new RandomAccessFile("D:\\abc.txt","r");
                raf2 = new RandomAccessFile("E:\\abc.txt","rw");
                byte[] by = new byte[1024];
                int len = 0;
                while((len = raf1.read(by)) != -1){
                    raf2.write(by, 0, len);
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                
                try {
                    if(raf2 != null)
                       raf2.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(raf1 != null)
                       raf1.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            
            
        }
    }

相關推薦

RandomAccessFile隨即讀取操作檔案4模式"r""rw""rws" "rwd"

'r' 以只讀方式開啟。呼叫結果物件的任何 write 方法都將導致丟擲 IOException。 "rw" 開啟以便讀取和寫入。如果該檔案尚不存在,則嘗試建立該檔案。 "rws" 開啟以便讀取和寫入

《從零開始學Swift》學習筆記Day 57——Swift編碼規範之凝視規範文件凝視文檔凝視代碼凝視使用地標凝視

精品 -type mil 顯示 clas ber ansi tex text 原創文章。歡迎轉載。轉載請註明:關東升的博客 前面說到Swift凝視的語法有兩種:單行凝視(//)和多行凝視(/*...*/)。這裏來介紹一下他們的使用規範。 1、文件凝視文件凝視就在每個文

list集合String字串去重的三方式

方式一: List<String> listTemp = new ArrayList<String>(); for(int i=0;i<list.size();i++){ if(!listTemp

C中操作檔案的幾模式

使用檔案的方式共有12種,下面給出了它們的符號和意義。  檔案開啟方式  意義 rt  只讀開啟一個文字檔案,只允許讀資料  wt  只寫開啟或建立一個文字檔案,只允許寫資料  at  追加開啟一個文字檔案,並在檔案末尾寫資料  rb  只讀開啟一個二進位制檔案,只允許讀資料  wb  只寫開啟或建立一個

深度學習之十一Deep learning中的優化方法隨機梯度下降受限的BFGS共軛梯度法

  三種常見優化演算法:SGD(隨機梯度下降),LBFGS(受限的BFGS),CG(共軛梯度法)。      1.SGD(隨機梯度下降)        隨機梯度下降(Stochastic Gradient Descent, SGD)是隨機和優化相結合的產物,是一種很神奇的優化方法,屬於

CSS3的邊框4樣式

1.border-color(邊框的顏色) 一般設定邊框都有3個屬性-寬度、線的樣式、顏色,如果寬度設定了很多PX,那麼就可以給邊框設定很多顏色,讓邊框顯示出漸變的效果,不過設定邊框不同顏色時只能通過border-bottom-colors,border-top-col

Flutter之drawer詳細分析你要的操作

1. 簡介 這篇文章主要講解有關drawer的一切。 另:接Flutter相關專案,需要的私信或通過QQ:708959817,聯絡我 2. 初探 我們先來看看簡單的drawer在Flutter的應用 class HomePage extends StatefulWidget {

Python小白學習之路十九—【檔案操作步驟】【檔案操作模式

一、檔案操作步驟 step1:開啟檔案,得到檔案控制代碼並賦值給一個變數step2:通過控制代碼對檔案進行操作step3:關閉檔案 舉例: a = open('hello world', 'r', encoding = 'utf-8') #開啟 ‘hello world’ 檔案,得到檔案控制

Python CSV檔案逗號分割操作

一、csv檔案介紹 1、csv檔案簡介 逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存表格資料(數字和文字)。純文字意味著該檔案是一個字元序列,不含必須像二進位制數字那樣被解讀的資

Python 檔案讀\寫操作

檔案(讀\寫)操作 open()函式,用來開啟檔案,建立file物件。open(name[,mode[,buffering]])name:要開啟的檔案mode:是開啟檔案的模式(讀、寫、追加)buffering:是否要寄存,預設為0或者False(不寄存),1或True表示寄存(意味著使用記憶體來代替硬碟,

python環境管理器使用程式介紹檔案讀取和寫入

#本程式示意自定義的類作為環境管理器使用 class FileWrite:     def __init__(self,filename):         self.filename = filename  

深入理解計算機系統3.3------操作數指示符和數據傳送指令

邏輯操作 無效 系統 get 訪問 www. 執行 十六 title   在上一篇博客 程序編碼以及數據格式 中我們給出了一個簡單的C程序,然後編譯成了匯編代碼。大家看不懂沒關系,後面的博客我們將逐漸揭開一些匯編指令的神秘面紗。本篇博客我們將對操作數指示符和數據傳送指令進行

VMware下安裝LinuxCentOs6.3操作系統

JD 直接 src 桌面 最小化安裝 進行 serve software OS VMware 10.0.2 CentOs 6.3 VMware的安裝以及CentOs的下載比較簡單,這裏不再描述 1.創建新的虛擬機 2.選擇典型 3.選擇稍後安裝操作系統 4.選

nodejs十七操作mysql資料庫

var mysql = require('mysql') // 1. 建立連線 var connection = mysql.createConnection({ host: '192.168.94.151', user: 'root', password: 'root',

Python入門十一File檔案方法

Python File(檔案) 方法 file 物件使用 open 函式來建立,下表列出了 file 物件常用的函式: 序號 方法 描述 1 file.close() 關

無線式PT二次迴路壓降測試儀SXP-W4m操作程式

(物品編號:計量班-FX03-#038) 一、適用作業專案 1、電壓互感器二次迴路電壓降現場校驗。 二、操作步驟及要求 1、連線電源線。 2、啟動裝置電源。 3、分機電壓接線:接線電壓黃、綠、紅、黑四根線分別接電壓端子Ua、Ub、Uc、Un;電流接線:直接接入式測量電流黃黑、綠黑、紅黑六根線

三相電能表現場校驗儀HPU-3030操作程式

(物品編號:計量班-FX03-#042) 一、適用作業專案 1、電能表現場實負荷檢驗作業。 二、操作步驟及要求 1、連線電源線。 2、按下ON-OFF按鈕,啟動校驗儀進行預熱,預熱時間一般為(15分鐘)。 3、電壓接線:標準表端接線電壓黃、綠、紅、黑四根線分別接電壓端子Ua、Ub、Uc、Un

電能計量裝置現場校驗儀AP2003-503操作程式

(物品編號:計量班-FX03-#039) 一、適用作業專案 1、電壓互感器二次迴路電壓降現場校驗。 二、操作步驟及要求 1、連線電源線。 2、工作電源選擇: 開關1 開關2 供電方式 測量方式 交流 電池 外接 內接 √ √ 外接220VAC 任何方式下 √ √ 儀表側電壓Uab輸入 僅現

python簡說十七操作mysql資料庫

import pymysqlconn = pymysql.connect(host='118.24.3.40',user='jxz',password='123456',port=3306,db='jxz',charset='utf8',autocommit=True)cur = conn.cursor(py

在python中矩陣維度, a,和 a 什麼區別?

在python中矩陣維度, (a,)和 a 有什麼區別? 測試: import numpy as np trainx = np.linspace(-1, 1, 10) print(trainx.shape) print(trainx[0].shape) print(*trainx