为了账号安全,请及时绑定邮箱和手机立即绑定

在编译时填充 Java File 对象

在编译时填充 Java File 对象

三国纷争 2022-05-25 15:33:22
我有一个第三方库,需要File在运行时填充 java 对象。我已经扩展了这段代码,但我不需要与文件相关的部分。但是,出于我的目的,我被迫创建和使用该File对象并从中读取。有没有办法可以在运行时获得已读文件的二进制等效文件?或者有没有办法让一个文件作为一个File对象已经可用的字节码?请根据我的情况假设,去文件系统检索和打开文件不是一种选择。感谢您的任何见解!
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您可以创建一个临时文件并在程序完成后删除。


import java.io.*;

import java.nio.file.*;


public class Program {

    public static final File EMPTY_FILE = createTmpFile("empty.dat");


    private static final File createTmpFile(final String filename) {

        String tmpDir = System.getProperty("java.io.tmpdir");

        Path filePath = Paths.get(tmpDir, filename);

        return filePath.toFile();

    }


    public static void main(String[] args) {

        try {

            // Do stuff...

            System.out.println(EMPTY_FILE.getCanonicalPath());

            Thread.sleep(2000);

        } catch (IOException | InterruptedException e) {

            e.printStackTrace();

        } finally {

            // Cleanup...

            EMPTY_FILE.delete();

        }

    }

}

如果您在他们的系统上需要一个 PHYSICAL 文件,您可以像这样创建它:


import java.io.*;

import java.nio.file.*;


public class Program {

    public static final String TMP_DIR = System.getProperty("java.io.tmpdir");

    public static final File EMPTY_FILE = createTmpFile("empty.dat");


    private static final File createTmpFile(final String filename) {

        Path filePath = null;

        try {

            byte[] data = { 0 }; // Write a single byte of data

            filePath = Files.write(Paths.get(TMP_DIR, filename), data);

        } catch (IOException e) {

            e.printStackTrace();

        }

        return filePath.toFile();

    }


    public static void main(String[] args) {

        try {

            // Do stuff...

            System.out.println(EMPTY_FILE.getCanonicalPath());

            Thread.sleep(2000);

        } catch (InterruptedException | IOException e) {

            e.printStackTrace();

        } finally {

            // Cleanup...

            EMPTY_FILE.delete();

        }

    }

}


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信