Java之文件读写操作

来源:互联网 发布:本地连接识别不了网络 编辑:程序博客网 时间:2024/05/20 11:23
java.io.File类用于表示文件(目录)
File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问


RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件
RandomAccessFile支持随机访问文件,可以访问文件的任意位置


(1)java文件模式
    在硬盘上文件是byte byte byte储存的,是数据的集合


(2)打开文件
    有两种模式  “rw”(读写)  “r”(只读)
 RandomAccessFile  raf = new RandomAccessFile(file,"rw"); 
     文件指针,打开文件时指针在开头 pointer = 0;


(3)写方法
  raf.write(int); //只写一个字节(后8位),同时指针指向下一个位置,准备再次写入
  
(4)读字节
  int b = raf.read();//读取一个字节
  

(5)文件读写完一定要关闭


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,"raf.dat");if(!file.exists())file.createNewFile();RandomAccessFile raf = new RandomAccessFile(file,"rw");//指针的位置System.out.println(raf.getFilePointer());raf.write('A');//只写了一个字节System.out.println(raf.getFilePointer());raf.write('B');System.out.println(raf.getFilePointer());int i = 0x7fffffff;//用write方法每次只能写一个字节,如果要把i写进去就得写4次raf.write(i >>> 24);//高8位raf.write(i >>> 16);raf.write(i >>> 8);raf.write(i);System.out.println(raf.getFilePointer());//可以直接写一个intraf.writeInt(i);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));String s1 = new String(buf,"gbk");System.out.println(s1);for(byte bt : buf){System.out.print(Integer.toHexString(bt)+"  ");}raf.close();}}


2 0