亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在編譯時填充 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 關注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號