Я использую API, для которого требуется вход java.io.File, но я бы хотел просто отправить API байтовый массив. Есть ли способ создать объект File, который будет считываться из моего байтового массива, а не из диска?Построить java.io.File, который читает из массива байтов
ответ
A File
ничего не читает. Он представляет собой файл (или каталог) объекта в операционной системе (или виртуальный файл и т. Д.). Чтобы прочитать это, вам придется создавать Читатели или потоки, которые API будет делать сам по себе. Если API не предоставляет методы для передачи в Reader или InputStream, вам не повезло.
Java работает с InputStream
(или OutpusStream
). Использование java.io.File
уже слишком сильно усиливает, тогда класс File
не является чем-либо, на котором вы можете читать или писать: он просто представляет запись в файловой системе (из которой вы можете тогда, но только тогда, получить связанные с ней потоки ввода и вывода).
Поэтому у вас должен быть метод, который принимает общий InputStream
. Если API просто поддерживает объект File
, то он явно плохо разработан (или вы пытаетесь использовать их не разрешенным способом).
String strFilePath = "filePath";
byte[] writeBytes = ...;
try {
FileOutputStream fos = new FileOutputStream(strFilePath);
fos.write(byteArray);
fos.close();
} catch(FileNotFoundException ex) {
// handle FileNotFoundException here
} catch(IOException ioe) {
// handle IOException here
}
EDIT: Обычно я не фанат просто дает код, но весь этот потоковый материал используется, чтобы запутать меня совсем немного, так что здесь есть решение;).
EDIT2: Хорошо, я просто понял, что это именно то, что OP не хотел делать. Так что этот ответ не очень полезно ...
Не используйте 'System.out.println()' как свою обработку исключений. Даже в примере кода. * Особенно * не в примере кода. Это часто копируется в производственный код, и это уже не смешно. –
@JoachimSauer Вы совершенно правы. Плохой бримборий. Изменено. ;) – brimborium
Вы можете открыть временный файл: open temp file in java
Тогда, если взять байт [] и записать все это во временный файл через некоторое OutputStream/Writer вы должны иметь то, что тебе нужно. Затем вы можете передать файл, не создавая его на диске.
- 1. Как построить цвет из массива байтов?
- 2. NSSwapInt из массива байтов
- 3. Надежно читает n байтов из файла
- 4. read() только читает несколько байтов из файла
- 5. Создайте переменную из массива байтов
- 6. Java String из массива байтов
- 7. Создание строки из массива байтов
- 8. Чтение короткого байта из массива байтов
- 9. Извлечение массива байтов из JSON
- 10. Создать-структуру из массива байтов
- 11. Определить кодировку из массива байтов
- 12. Создать java.awt.Image из массива байтов
- 13. Открыть файл из массива байтов
- 14. Создайте CGPDFDocument из массива байтов
- 15. Создание PDF из массива байтов
- 16. Обрезать изображение из массива байтов
- 17. crc16 ccitt из массива байтов
- 18. Построить иерархический список из массива
- 19. Рекурсивный Построить строку из массива
- 20. JQuery построить галерею из массива
- 21. Как построить кортеж из массива
- 22. Клиент читает слишком много байтов с сервера?
- 23. Как построить гистограмму из массива
- 24. Построить функцию генератора из массива
- 25. Как построить WriteBuf из массива
- 26. Построить матрицу из индексов массива
- 27. Отправка части массива байтов
- 28. Получить java.nio.file.Path объект из java.io.File
- 29. listFiles из java.io.File бросает NullPointerException
- 30. SPI не читает первые 6 байтов
Возможный дубликат [Создание файла из массива байтов] (http://stackoverflow.com/questions/3704554/creating-a-file-from-byte-array) –
@JoachimSauer не очень, поскольку связанные вопросы задают если можно записать в файл без записи на диск (какой-то виртуальный файл или так), тогда как в этом вопросе просто возникает вопрос, как писать в файл. – brimborium
@brimborium: проблемы выглядят почти одинаково для меня: они * нужны * 'java.io.File', потому что это требует какой-то сторонний API, но они * имеют * байтовый массив/поток и не делают хотите сохранить его на диске (что было бы прямолинейным, но неэффективным решением). Кроме того, ответ один и тот же: нет, это невозможно. –