真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在Java項(xiàng)目中使用RandomAccessFile類如何實(shí)現(xiàn)操作文件

本篇文章給大家分享的是有關(guān)在Java項(xiàng)目中使用RandomAccessFile類如何實(shí)現(xiàn)操作文件,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、荊州網(wǎng)絡(luò)推廣、微信小程序、荊州網(wǎng)絡(luò)營銷、荊州企業(yè)策劃、荊州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供荊州建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

1. RandomAccessFile類簡介

RandomAccessFile是Java提供用來訪問一些保存數(shù)據(jù)記錄的文件的類,可以進(jìn)行讀取操作,也可以進(jìn)行寫入操作,寫入的數(shù)據(jù)則以byte的形式存儲(chǔ);支持隨機(jī)訪問,也就是可以訪問文件的任意位置(通過文件指針實(shí)現(xiàn))。

2. 構(gòu)造函數(shù)

RandomAccessFile(String name, String mode)
RandomAccessFile(File file, String mode)

兩個(gè)構(gòu)造函數(shù)用法非常相似,name、file都是用于指定打開的文件路徑和名稱,mode則是指定打開文件的方式,常用的參數(shù)有兩個(gè)"r"和"rw",也就是只讀和讀寫。

文件打開后,文件指針指向文件最開始,也就是pointer=0,可通過RandomAccessFile了的getFilePointer()方法查看。

范例:創(chuàng)建并打開一個(gè)數(shù)據(jù)文件。

//創(chuàng)建目錄
File dir = new File("demo");
if (!dir.exists()) {
  dir.mkdir();
}
//創(chuàng)建文件
File file = new File(dir, "test.dat");
if (!file.exists()) {
  file.createNewFile();
}
//實(shí)例化RandomAccessFile對象
RandomAccessFile raf = new RandomAccessFile(file, "rw");
//打開文件時(shí)指針位置在最前,即0
System.out.println(raf.getFilePointer());

3. 寫入操作

write(int i)
write(byte[] b)
write(byte[] b, int off, int len)

第三個(gè)方法中的off為數(shù)組b中需要寫入的數(shù)據(jù)的起始索引值,len則是要寫入的長度。write方法每次寫入一個(gè)字節(jié),如果寫入的數(shù)據(jù)超過一個(gè)字節(jié),則寫入后八位(如果這里不太理解,可看看:二進(jìn)制運(yùn)算基礎(chǔ))。

另外,每寫入一個(gè)字節(jié),文件指針指向下一個(gè)字節(jié)。

范例:通過write()方法向文件中寫入一個(gè)整型數(shù)。(沿用上面例子創(chuàng)建的對象)

//write()方法每次只插入一個(gè)字節(jié),大于一個(gè)字節(jié)的則寫入后八位,因此寫入一個(gè)整型數(shù)需要寫入四次
int num = 28;
raf.write(num >>> 24);
raf.write(num >>> 16);
raf.write(num >>> 8);
raf.write(num);

當(dāng)然,RandomAccessFile類也提供了更簡便的方法writeXxx(),如果插入一個(gè)整型,可直接writeInt(i);,boolean的則為writeBoolean(),以此類推。但是要清楚的是,這些方法的還是通過上面的write()方法實(shí)現(xiàn)的。

范例:以下為RandomAccessFile類中writeInt()方法的方法體。

public final void writeInt(int v) throws IOException {
  write((v >>> 24) & xFF);
  write((v >>> 16) & xFF);
  write((v >>> 8) & xFF);
  write((v >>> 0) & xFF);
  //written += 4;
}

4. 讀取操作

read(int i)
read(byte[] b)
read(byte[] b, int off, int len)

與寫入操作類似,讀取操作是通過read()方法實(shí)現(xiàn)的,每次讀取一個(gè)字節(jié),同時(shí)文件指針指向下一個(gè)位置(通過seek()方法將指針移到讀取位置)。同時(shí),RandomAccessFile類也封裝了readXxx()系列方法用于簡便讀取,原理和使用方法可參考寫入操作,基本類似。

范例:將數(shù)據(jù)文件中的所有數(shù)據(jù)以整型形式讀取出來。

//讀取文件,在讀取前需要通過seek()方法把文件指針移到最前
raf.seek(0);
for (int i = 0; i*4 < raf.length(); i++) {
  System.out.println(raf.readInt());
}

5. 關(guān)閉文件

打開的文件一定要通過close()關(guān)閉,否則可能會(huì)出現(xiàn)不可預(yù)料的錯(cuò)誤。

6. 完整例子

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

public class MyRandomAccessFile {

  public static void main(String[] args) throws IOException {
    //創(chuàng)建目錄
    File dir = new File("demo");
    if (!dir.exists()) {
      dir.mkdir();
    }
    //創(chuàng)建文件
    File file = new File(dir, "test.dat");
    if (!file.exists()) {
      file.createNewFile();
    }
    
    //實(shí)例化RandomAccessFile對象
    RandomAccessFile raf = new RandomAccessFile(file, "rw");
    //打開文件時(shí)指針位置在最前,即0
    System.out.println(raf.getFilePointer());

    //寫入數(shù)據(jù)
    int[] num = {28, 14, 56, 23, 98};
    for (int i : num) {
      raf.writeInt(i);
    }
    
    //讀取文件,在讀取前需要通過seek()方法把文件指針移到最前
    raf.seek(0);
    for (int i = 0; i*4 < raf.length(); i++) {
      System.out.println(raf.readInt());
    }
    
    //操作結(jié)束后一定要關(guān)閉文件
    raf.close();
  }
}

以上就是在Java項(xiàng)目中使用RandomAccessFile類如何實(shí)現(xiàn)操作文件,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前題目:在Java項(xiàng)目中使用RandomAccessFile類如何實(shí)現(xiàn)操作文件
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/gejojd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部