Java中的文件操作(一)RandomAccessFile


      今天,學到的是java中的文件操作。

      Java.IO.File

     Java中操作文件用到RandomAccessFile類,既可以讀取文件內容,也可以向文件輸出數據,但不同與普通輸入/輸出流的是RandomAccessFile支持“隨機訪問”的方式,即程序可以跳轉到文件的任意地方來讀寫數據。

    局限:只能讀寫文件,不能讀寫其他IO節點

   了解

   (1)Java文件模型

        在硬盤上是byte byte byte 儲存的,是 數據的集合

   (2)打開文件

     兩種常用模式“rw”讀寫方式 “r”讀

   

  (3)寫方法

    Raf.write(int a)

  (4)讀方法

   (5)用完之后要關閉

       演示例子:

package com.my_demo;

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

public class RafDemo {

	

	public static void main(String[] args) throws IOException{
		File demo = new File("demo"); // 創建一個文件
		if(!demo.exists())//如果文件不存在,創建到絕對目錄下
			
		{
			demo.mkdirs();//這是個父目錄
		} 
		File file = new File(demo, "dat.txt");
        if(!file.exists()){
        	file.createNewFile();//在demo目錄下創建了文件
        }
        
      //  RandomAccessFile raf = new RandomAccessFile(file, "rw");
        RandomAccessFile raf = new RandomAccessFile("dat.txt", "rw");//讀寫方式
        //看一下初始時的指針位置
          System.out.println(raf.getFilePointer());
        
        //往里寫一個字節后看看指針的位置
           raf.write('c'); //寫了一個字節,它的后八位
           //看一下此時的指針位置
           System.out.println(raf.getFilePointer()); 
          /**
           * 用writechar()方法時會寫入兩個字節
           */
//           raf.writeChar('c');
           
           //寫入一個int
           int i = 0x7fffffff;//最大的整型
           raf.write(i>>>24);//寫進去高八位
           raf.write(i>>>16);
           raf.write(i>>>8);
           raf.write(i); //Java底層的運行機制
         //看一下此時的指針位置
           System.out.println(raf.getFilePointer());
           
           String s ="中";
           byte[] gbk = s.getBytes("gbk");
           raf.write(gbk);
           System.out.println(raf.length());
           
           
          //讀文件,必須把指針移到頭部
           raf.seek(0);
           //一次性讀取,把文件中的內容都讀寫到字節數組中
           byte[] buf = new byte[(int)raf.length()];
           raf.read(buf);
           
           System.out.println(Arrays.toString(buf));
           //最后必須關閉
           raf.close();
	}
	
       
}

                                                                                                                                不足之處望指正,新手請多關照


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM