2010-12-03 2 views
202

С Java:байт [] в файл в Java

У меня есть byte[], который представляет собой файл.

Как я пишу это в файл (то есть. C:\myfile.pdf)

Я знаю, что это сделано с InputStream, но я не могу показаться, чтобы решить это.

+0

Я делал это тысячу раз, я просто не мог помните классы. – elcool 2010-12-04 18:30:35

+6

@JonathonFaust, учитывая, что это сообщение является результатом № 3 для Google Search, который вы опубликовали, вы вызвали бесконечную рекурсию. – 2015-02-18 07:00:54

ответ

323

Использование Apache Commons IO

FileUtils.writeByteArrayToFile(new File("pathname"), myByteArray) 

Или, если вы настаиваете на том, работать для себя ...

try (FileOutputStream fos = new FileOutputStream("pathname")) { 
    fos.write(myByteArray); 
    //fos.close(); There is no more need for this line since you had created the instance of "fos" inside the try. And this will automatically close the OutputStream 
} 
+92

У Apache Commons серьезно есть обертка для 3-лайнера? На самом деле это довольно грустно. – Powerlord 2010-12-03 21:42:00

+25

@R. Bemrose Ну, вероятно, ему удается очистить ресурсы в печальном случае. – 2010-12-03 21:51:11

4

Попробуйте OutputStream или более конкретно FileOutputStream

1

Простой пример:

String fileName = "file.test"; 

BufferedOutputStream bs = null; 

try { 

    FileOutputStream fs = new FileOutputStream(new File(fileName)); 
    bs = new BufferedOutputStream(fs); 
    bs.write(byte_array); 
    bs.close(); 
    bs = null; 

} catch (Exception e) { 
    e.printStackTrace() 
} 

if (bs != null) try { bs.close(); } catch (Exception e) {} 
131

Без каких-либо библиотек:

FileOutputStream stream = new FileOutputStream(path); 
try { 
    stream.write(bytes); 
} finally { 
    stream.close(); 
} 

С Google Guava:

Files.write(bytes, new File(path)); 

С Apache Commons:

FileUtils.writeByteArrayToFile(new File(path), bytes); 

Все эти стратегии требуют, чтобы вы поймать IOException в какой-то момент тоже.

16

С Java 7 вперед вы можете использовать примерочных с-ресурсами заявление, чтобы избежать утечки ресурсов и сделать легче читать ваш код. Подробнее об этом here.

Чтобы написать свой byteArray в файл вы должны сделать следующее:

try (FileOutputStream fos = new FileOutputStream("fullPathToFile")) { 
    fos.write(byteArray); 
} catch (IOException ioe) { 
    ioe.printStackTrace(); 
} 
69

Другое решение с использованием java.nio.file:

byte[] bytes = ...; 
Path path = Paths.get("C:\myfile.pdf"); 
Files.write(path, bytes); 
16

Также с Java 7, одна линия с java.nio.file.Files:

Files.write(new File(filePath).toPath(), data); 

Где данные - ваш байт [], а filePath - это строка. Вы также можете добавить несколько вариантов открытия файла с классом StandardOpenOptions. Добавьте броски или закруглите с помощью try/catch.

0

Это программа, в которой мы читаем и печатаем массив смещений и длины байтов с помощью String Builder и записываем массив длины смещения байтов в новый файл.

`Введите код здесь

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException;   

//*This is a program where we are reading and printing array of bytes offset and length using StringBuilder and Writing the array of bytes offset length to the new file*//  

public class ReadandWriteAByte { 
    public void readandWriteBytesToFile(){ 
     File file = new File("count.char"); //(abcdefghijk) 
     File bfile = new File("bytefile.txt");//(New File) 
     byte[] b; 
     FileInputStream fis = null;    
     FileOutputStream fos = null;   

     try{    
      fis = new FileInputStream (file);   
      fos = new FileOutputStream (bfile);    
      b = new byte [1024];    
      int i;    
      StringBuilder sb = new StringBuilder(); 

      while ((i = fis.read(b))!=-1){     
       sb.append(new String(b,5,5));    
       fos.write(b, 2, 5);    
      }    

      System.out.println(sb.toString());    
     }catch (IOException e) {      
      e.printStackTrace();     
     }finally {    
      try {    
       if(fis != null);   
        fis.close(); //This helps to close the stream   
      }catch (IOException e){   
       e.printStackTrace();    
      }    
     }    
    }    

    public static void main (String args[]){    
     ReadandWriteAByte rb = new ReadandWriteAByte();    
     rb.readandWriteBytesToFile();    
    }     
}     

O/P в консоли: FGHIJ

O/P в новом файле: cdefg

0
File f = new File(fileName);  
byte[] fileContent = msg.getByteSequenceContent();  

Path path = Paths.get(f.getAbsolutePath()); 
try { 
    Files.write(path, fileContent); 
} catch (IOException ex) { 
    Logger.getLogger(Agent2.class.getName()).log(Level.SEVERE, null, ex); 
} 
1

/////// /////////////////// 1] Файл к байту [] ///////////////////

Path path = Paths.get(p); 
        byte[] data = null;       
        try { 
         data = Files.readAllBytes(path); 
        } catch (IOException ex) { 
         Logger.getLogger(Agent1.class.getName()).log(Level.SEVERE, null, ex); 
        } 

/////////////////////// 2 Байт [] в файл ///////////////// //////////

File f = new File(fileName); 
byte[] fileContent = msg.getByteSequenceContent(); 
Path path = Paths.get(f.getAbsolutePath()); 
          try { 
           Files.write(path, fileContent); 
          } catch (IOException ex) { 
           Logger.getLogger(Agent2.class.getName()).log(Level.SEVERE, null, ex); 
          }