文件的read / write / copy和objec类型的读取与写入

文件的read / write / copy

 /**
     * 统计文件夹的大小
     *
     * @param pathName 目标文件夹的路径
     * @return 返回该文件夹的总大小
     */
    public static long getSize(String pathName) {

        long size = 0;
        // 通过路径生成一个file对象,表示根目录
        File file = new File(pathName);
        // 利用listFile方法遍历该目录中的所有子元素(包括子目录和子文件)
        File[] files = file.listFiles();
        for (File f : files) {
            System.out.println("当前的文件路径:" + f.getPath());
            if (f.isFile()) {
                size += f.length();
            } else {
                size += getSize(f.getPath());   // 如果用全局变量size,就改成  getSize(f.getPath());
            }
        }
        return size;
    }


    // 文件夹的删除


    /**
     * 读文件内容的方法  , 可以用FileReader, 如果有异常,也在声明中抛出
     *
     * @param pathName 目标文件路径
     * @return
     */
    public static String read(String pathName) throws IOException {
        StringBuilder builder = new StringBuilder();
        //读取缓冲区
        char[] chars = new char[1024];
        //每次读取的字符数量
        int num = 0;

        Reader fileReader = null;
        fileReader = new FileReader(pathName);

        while((num = fileReader.read(chars)) != -1)
            builder.append(chars, 0 , num);

        if (fileReader != null)
            fileReader.close();
        return builder.toString();
    }


    /**
     * 向指定文件中写入内容的方法 , 可以用FileWriter,如果有异常,也在声明中抛出
     *
     * @param content  要写入的内容
     * @param pathName 要写入的目标文件
     */
    public static void write(String content, String pathName) throws IOException {
        FileWriter fileWriter = null;
        fileWriter = new FileWriter(pathName);

        fileWriter.write(content);
        if (fileWriter != null)
            fileWriter.close();
    }

    /**
     * 文件的拷贝方法 , 此方法要支持任意类型的文件(所有的文件都可以看做二进制/字节 形式 ,就应当使用字节流
     *
     * @param src  源文件的地址
     * @param dist 目标文件的地址
     */
    public static void copy(String src, String dist) throws IOException {
        //读取缓冲区
        char[] chars = new char[1024];
        //储存字符串
        StringBuilder builder = new StringBuilder();
        //读取字符串数量
        int n = 0;

        Reader reader = null;
        reader = new FileReader(src);
        BufferedReader bufferedReader = null;
        bufferedReader = new BufferedReader(reader);

        while((n = bufferedReader.read(chars)) != -1)
            builder.append(chars, 0, n);

        FileWriter fileWriter = null;
        fileWriter = new FileWriter(dist);
        fileWriter.write(builder.toString());

        if (fileWriter != null)
            fileWriter.close();
        if (builder != null)
            bufferedReader.close();
        if (reader != null)
            reader.close();
    }

对象的read与writer

user

public class User implements Serializable{
    private String name;
    private int age;
    private String gender;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getGender() {
        return gender;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

UserWrite

public class UserWrite {
    public static final String S = File.separator;

    public static void main(String[] args) {
        User users = new User();
        users.setName("zhang");
        users.setAge(18);
        users.setGender("男");

        String pathName = "Directory" + S + "Directory2" + S + "File2";
        OutputStream fileOutputStream = null;
        ObjectOutputStream objectOutputStream = null;

        try {
            fileOutputStream = new FileOutputStream(pathName, true);
            objectOutputStream = new ObjectOutputStream(fileOutputStream);
            objectOutputStream.writeObject(users);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

UserReader

public class UserReader {
    public static final String S = File.separator;

    public static void main(String[] args) {
        User user = null;

        String pathName = "Directory" + S + "Directory2" + S + "File2";
        InputStream fileInputStream = null;
        ObjectInputStream objectInputStream = null;

        try {
            fileInputStream = new FileInputStream(pathName);
            objectInputStream = new ObjectInputStream(fileInputStream);
            user = (User) objectInputStream.readObject();
            System.out.println(user.getName());
            System.out.println(user.getAge());
            System.out.println(user.getGender());
            //当文件中有几个对象时, 可以再次声明ObjectInputStream来读取下一个对象
            objectInputStream = new ObjectInputStream(fileInputStream);
            user = (User) objectInputStream.readObject();
            System.out.println(user.getName());
            System.out.println(user.getAge());
            System.out.println(user.getGender());


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

list也是类似

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值