12 java文件操作编程

File类,可以获取指定文件的属性,与创建,删除文件,重命名等操作.

如实现用File类对象判断”/88.txt”文件是否存在,如不存放则创建文件

        File f = new File("/88.txt"); //创建一个与"/88.txt"文件关联的File对象

        if (!f.exists())
            f.createNewFile();

RandomAccessFile类可以把内容写进File对象引用的文件里,也可以从文件里读取内容. 适用于一般的文件和多媒体等普通文件, 不适用于网络,io设备等.
RandomAccessFile类对象内部会记录文件的读写位置,每次读或写都会改变位置的偏移。
用法:

    RandomAccessFile ff = new RandomAccessFile(File对象, "rw");   //基于一个File对象创建一个RandomAccessFile对象

    ff.writeUTF("what the hell"); //按utf8编码写入字符串
    ff.writeInt(7788); //写入int类型数据

    ff.readUTF(); //读取字符串
    ff.readInt(); //读取int类型数据
    ff.close(); //关闭文件

java里提供了文件操作流类,可用于存取二进制数据及自定义类型的数据。
流操作的基类: InputStream OutputStream
派生类: FileInputStream FileOutputStream, ObjectOutputStream, ObjectInputStream

使用流操作基类的方法:

           //f是已创建出来的一个引用文件的File对象

        OutputStream out = new FileOutputStream(f); //创建一个输出流操作对象
        out.write("hello world 8888888".getBytes()); //通过输出流操作对象把内容写入文件里.

        InputStream in = new FileInputStream(f); //创建一个输入流操作对象
        byte [] b = new byte[1000]; //byte相当于char, 准备存放读入内容的缓冲区
        int ret;
        ret = in.read(b); //通过输入流操作对象读入文件的内容
        System.out.println(new String(b));

当创建流操作的派生类对象来操作文件时,都需要引用一个流操作的基类对象.

如创建一个把自定义的类对象写入到文件里的ObjectOutputStream对象:

ObjectOutputStream obout = new ObjectOutputStream(out); //out是OutputStream的对象

而且自定义的类型也需要实现序列化的接口Serializable(这样类对象才能转化成二进制数据):

//序列化
class 自定义类 implements Serializable {
        ....
};
obout.writeObject(类对象); //类要实现序列化接口


例如实现通过流操作把自定义的Student类对象存储到文件里并读取出来:

/* Hello.java */

import java.io.*;

class Student implements Serializable {
    private static final long serialVersionUID = -8378972921576710454L;
    private int id;
    private String name;

    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public String toString() {
        return "id " + id + " name " + name;
    }

}


public class Hello {

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        File f = new File("/home/jk/7.txt");
        if (!f.exists())
            f.createNewFile();
        Student s = new Student(0, "小李");

        OutputStream outs = new FileOutputStream(f);
        ObjectOutputStream out = new ObjectOutputStream(outs);
        out.writeObject(s);
        out.close();

        InputStream in = new FileInputStream(f);

        ObjectInputStream obin = new ObjectInputStream(in);
        Student ss;
        ss = (Student) obin.readObject();
        obin.close();

        System.out.println(ss);




    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值