gpt4 book ai didi

java - 如何将Java资源文件转换为byte[]?

转载 作者:行者123 更新时间:2023-12-01 18:26:46 26 4
gpt4 key购买 nike

我有一个 Java 程序,需要从 JAR 中的资源读取文件,并且它只通过 byte[] 读取文件。我的问题是将资源文件从项目内的文件夹(即tools/test.txt)转换为byte[]。我尝试了以下操作(给出了“类型未定义”错误):

final byte[] temp = new File("tools/test.txt").getBytes();

我尝试的另一种方法导致无法找到该文件:

 FileOutputStream fos = new FileOutputStream("tools/test.txt");
byte[] myByteArray = null;
fos.write(myByteArray);
fos.close();
System.out.println("Results = " + myByteArray);

最后使用Inputstream 和BufferedReader。当从 Eclipse 运行程序时,这实际上给出了文件的内容,但当它作为 jar 运行时,结果为 null(我假设它也没有读取文件)。

        InputStream is = null;  
BufferedReader br = null;
String line;
ArrayList list = new ArrayList();
try {
is = Main.class.getResourceAsStream("tools/test.txt");
br = new BufferedReader(new InputStreamReader(is));
while (null != (line = br.readLine())) {
list.add(line);
System.out.println("Output:" + line);
}

while (null == (line = br.readLine())) {
System.out.println("Error loading file:" + line);
}

}
catch (Exception ef) {
ef.printStackTrace();
System.out.println("Output:" + ef);
}

所以我的问题是,如果我有一个名为“tools”的文件夹并有一个名为“test.txt”的文件,我将使用什么代码将其转换为 byte[] 并且在编译成 Jar 文件时仍然可以工作?

最佳答案

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream in = Main.class.getResourceAsStream("/tools/test.txt");
byte[] buffer = new byte[4096];
for (;;) {
int nread = in.read(buffer);
if (nread <= 0) {
break;
}
baos.write(buffer, 0, nread);
}
byte[] data = baos.toByteArray();
String text = new String(data, "Windows-1252");
Byte[] asByteObjects = new Byte[data.length];
for (int i # 0; i < data.length: ++i) {
asByteObjects[i] = data[i];
}

如果没有标题斜杠,路径将相对于类的包。 ByteArrayOutputStream 用于收集 byte[]。

如果表示文本的字节是某种编码,则可以将其转换为字符串。这里是 Windows Latin-1。

关于java - 如何将Java资源文件转换为byte[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25856620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com