Как я могу прочитать массив short
из файла, например. аудио или видео? И как я могу записать его обратно в файл?Преобразование файла в короткий массив и наоборот
0
A
ответ
0
Я действительно сомневаюсь, если SHORT если возможно. Тем не менее, вы можете проверить Apache Commons File Utils для чтения файла как byte[]
и наоборот.
public static byte[] readFileToByteArray(File file) throws IOException
0
Фрагмент ниже считывает файл с помощью FileInputStream, и записывает файл на заданный путь, используя FileOutputStream.
Java код:
byte[] fileBArray = new byte[(int)file.length()];
FileInputStream fis = new FileInputStream(file);
fis.read(fileBArray);
FileOutputStream fos = new FileOutputStream("C:\\abc.jpg");
fos.write(fileBArray);
0
Это лучший пример:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
Converting binary data into different forms.
<P>Reads binary data into memory, and writes it back out.
(If your're actually copying a file, there are better ways to do this.)
<P>Buffering is used when reading and writing files, to minimize the number
of interactions with the disk.
*/
public final class BytesStreamsAndFiles {
/** Change these settings before running this class. */
private static final String INPUT_FILE_NAME = "C:\\TEMP\\cottage.jpg";
private static final String OUTPUT_FILE_NAME = "C:\\TEMP\\cottage_copy.jpg";
/** Run the example. */
public static void main(String... aArgs) {
BytesStreamsAndFiles test = new BytesStreamsAndFiles();
//read in the bytes
byte[] fileContents = test.read(INPUT_FILE_NAME);
//test.readAlternateImpl(INPUT_FILE_NAME);
//write it back out to a different file name
test.write(fileContents, OUTPUT_FILE_NAME);
}
/** Read the given binary file, and return its contents as a byte array.*/
byte[] read(String aInputFileName){
log("Reading in binary file named : " + aInputFileName);
File file = new File(aInputFileName);
log("File size: " + file.length());
byte[] result = new byte[(int)file.length()];
try {
InputStream input = null;
try {
int totalBytesRead = 0;
input = new BufferedInputStream(new FileInputStream(file));
while(totalBytesRead < result.length){
int bytesRemaining = result.length - totalBytesRead;
//input.read() returns -1, 0, or more :
int bytesRead = input.read(result, totalBytesRead, bytesRemaining);
if (bytesRead > 0){
totalBytesRead = totalBytesRead + bytesRead;
}
}
/*
the above style is a bit tricky: it places bytes into the 'result' array;
'result' is an output parameter;
the while loop usually has a single iteration only.
*/
log("Num bytes read: " + totalBytesRead);
}
finally {
log("Closing input stream.");
input.close();
}
}
catch (FileNotFoundException ex) {
log("File not found.");
}
catch (IOException ex) {
log(ex);
}
return result;
}
/**
Write a byte array to the given file.
Writing binary data is significantly simpler than reading it.
*/
void write(byte[] aInput, String aOutputFileName){
log("Writing binary file...");
try {
OutputStream output = null;
try {
output = new BufferedOutputStream(new FileOutputStream(aOutputFileName));
output.write(aInput);
}
finally {
output.close();
}
}
catch(FileNotFoundException ex){
log("File not found.");
}
catch(IOException ex){
log(ex);
}
}
/** Read the given binary file, and return its contents as a byte array.*/
byte[] readAlternateImpl(String aInputFileName){
log("Reading in binary file named : " + aInputFileName);
File file = new File(aInputFileName);
log("File size: " + file.length());
byte[] result = null;
try {
InputStream input = new BufferedInputStream(new FileInputStream(file));
result = readAndClose(input);
}
catch (FileNotFoundException ex){
log(ex);
}
return result;
}
/**
Read an input stream, and return it as a byte array.
Sometimes the source of bytes is an input stream instead of a file.
This implementation closes aInput after it's read.
*/
byte[] readAndClose(InputStream aInput){
//carries the data from input to output :
byte[] bucket = new byte[32*1024];
ByteArrayOutputStream result = null;
try {
try {
//Use buffering? No. Buffering avoids costly access to disk or network;
//buffering to an in-memory stream makes no sense.
result = new ByteArrayOutputStream(bucket.length);
int bytesRead = 0;
while(bytesRead != -1){
//aInput.read() returns -1, 0, or more :
bytesRead = aInput.read(bucket);
if(bytesRead > 0){
result.write(bucket, 0, bytesRead);
}
}
}
finally {
aInput.close();
//result.close(); this is a no-operation for ByteArrayOutputStream
}
}
catch (IOException ex){
log(ex);
}
return result.toByteArray();
}
private static void log(Object aThing){
System.out.println(String.valueOf(aThing));
}
}
подробнее перейти к: Reading and writing binary files
Смежные вопросы
- 1. c; преобразование 2 байта в короткий и наоборот
- 2. Java- Преобразование файла в массив байтов и наоборот, используя java7
- 3. Преобразование изображения в байтовый массив и наоборот
- 4. Преобразование ArrayBuffer в массив и наоборот
- 5. преобразование из двойной массив байтов и наоборот
- 6. Преобразование строки в шестнадцатеричную и наоборот наоборот
- 7. Преобразование короткого массива в байтовый массив и наоборот и int в байтовый массив и наоборот в Objective-c
- 8. sqlite3 преобразование данных в короткий массив
- 9. Преобразование строкового массива в короткий массив
- 10. Преобразование строки в короткий массив - Java
- 11. Преобразование байта [] массив в короткий [] массив с половиной длины
- 12. Преобразование строки в массив целых чисел и наоборот в JavaScript
- 13. Преобразование float в массив байтов и наоборот в Java
- 14. Преобразование длинного имени файла в короткий файл
- 15. Преобразование значения int в 3-байтовый массив (и наоборот)
- 16. Преобразование байтового массива в короткий массив в C#
- 17. Преобразование DataTable в файл XML и наоборот
- 18. Преобразование .xls в .txt и наоборот
- 19. «Преобразование» массивов Numpy в Matlab и наоборот
- 20. Преобразование CNContact в NSData и наоборот
- 21. Преобразование правильно pdf в ps и наоборот
- 22. Преобразование char в короткий
- 23. Преобразование объекта в короткий
- 24. Чтение файла txt и преобразование в массив
- 25. Храните текстовый файл в массив и наоборот
- 26. Как преобразовать короткий массив в массив байтов?
- 27. Преобразование шестиугольника в короткий и длинный
- 28. Преобразование char * в короткий и char
- 29. Преобразование объекта в двоичный код и наоборот
- 30. Преобразование битмапа в байт и наоборот
Использование '' ObjectOutputStream' и ObjectInputStream'. –