У меня есть Java-программа, которая должна читать файл с ресурса в JAR, и он берет его только через байт []. Моя проблема заключается в преобразовании файла ресурсов из папки в проекте (т. Е. Tools/test.txt) в байт []. Я попробовал следующее (дал «неопределенными для типа» ошибка):Как получить файл ресурсов Java в байт []?
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, но получилось как 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);
}
Так что мой вопрос, если у меня есть папка с именем «инструменты» и есть файл с именем «test.txt», какой код я бы использовать, чтобы превратить его в байт [] и по-прежнему работать при компиляции в файл Jar?
Благодарим вас за такой быстрый ответ. Я пробовал ваш код. Тем не менее, я получаю немного странный ответ. Я попытался напечатать результат «данных», и он дал мне «[B @ 723279cf», что странно. Текстовый файл содержит около 40 строк текста, ни один из которых не содержит этих символов. Я не совсем уверен, что происходит, может быть, я все испортил косые черты? – steven
Это toString() из байта [] "[B". Я продлеваю свой ответ. –
При дальнейшем тестировании я заметил что-то. при печати «baos» после строки baos.write (buffer, 0, nread); он имеет полный ввод файла, однако при преобразовании его в «данные», похоже, проблема. Я тестирую это, когда я иду сюда. – steven