今天,學到的是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();
}
}
不足之處望指正,新手請多關照
