猿问

在编译时填充 Java File 对象

我有一个第三方库,需要File在运行时填充 java 对象。我已经扩展了这段代码,但我不需要与文件相关的部分。但是,出于我的目的,我被迫创建和使用该File对象并从中读取。

有没有办法可以在运行时获得已读文件的二进制等效文件?或者有没有办法让一个文件作为一个File对象已经可用的字节码?请根据我的情况假设,去文件系统检索和打开文件不是一种选择。

感谢您的任何见解!


三国纷争
浏览 79回答 1
1回答

qq_花开花谢_0

您可以创建一个临时文件并在程序完成后删除。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();        }    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答