在java中创建一个二进制文件

时间:2021-06-26 16:58:44

标签: java file io binary output

这些是可能导致我的问题被关闭的相关问题,即使我指定了另一个问题:

现在进入正题。我有一个带有特定扩展名的文件,更准确地说它是 .nbs。我想创建一个文件,然后将特定数据写入其中。
这可能听起来很模糊,所以让我向您展示我开始使用的代码。

try {
    File bpdn = new File(getDataFolder() + "song.nbs");
    if (!bpdn.exists()) {
        bpdn.createNewFile();
    }

    FileOutputStream fos = new FileOutputStream(bpdn);

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

我会为您提供更多详细信息。所以我有一个过去为自己创建的 song.nbs 文件。现在,每当有人运行我的应用程序时,我都希望它有一个新的 song.nbs 文件,其中包含我现在 PC 上的文件的确切内容。因此,我需要以某种方式获取现有 song.nbs 的字节,然后将它们复制并粘贴到我的 Java 应用程序中......或者是这样吗?我现在既不知道如何获取我自己文件的字节,也不知道如何编写它们。

2 个答案:

答案 0 :(得分:2)

您需要创建一个 resources 文件夹。更多信息here

假设您的项目结构是

ProjectName/src/main/java/Main.java

您可以在 main/ 中创建一个 resources 文件夹:

ProjectName/src/main/java/Main.java
ProjectName/src/main/resources/

将您要阅读的song.nbs移到resources/中:

ProjectName/src/main/java/Main.java
ProjectName/src/main/resources/song.nbs

现在,获取存储在那里的 song.nbsInputStream

final ClassLoader classloader = Thread.currentThread().getContextClassLoader();
final InputStream is = classloader.getResourceAsStream("song.nbs");

然后,将此输入流写入您的新文件:

final File bpdn = new File(getDataFolder() + "song.nbs");
if (!bpdn.exists()) bpdn.createNewFile();
final FileOutputStream os = new FileOutputStream(bpdn);

byte[] buffer = new byte[1024];
int read;
while ((read = is.read(buffer)) != -1) {
    os.write(buffer, 0, read);
}

答案 1 :(得分:-1)

我想我想出了一个解决方案,但我不确定这是否有效。如果您能看一下,我将不胜感激。

try {
    File bpdn = new File(getDataFolder() + "badpiggiesdrip.nbs");
    if (!bpdn.exists()) {
        bpdn.createNewFile();
    }

    FileOutputStream fos = new FileOutputStream(bpdn);
    fos.write(new byte[] {
            Byte.parseByte(Arrays.toString(Base64.getDecoder().decode(Common.myString)))
    });

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

Common.myString 只是一个字符串,包含这种类型的数据:

(byte) 0x21, (byte) 0x5a, .....

它是用 Base64 编码的。

相关问题