Câu trả lời:
Sử dụng Apache Commons IO
FileUtils.writeByteArrayToFile(new File("pathname"), myByteArray)
Hoặc, nếu bạn khăng khăng làm việc cho chính mình ...
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
}
try {} finally {}
để đảm bảo dọn dẹp tài nguyên thích hợp.
Không có bất kỳ thư viện:
try (FileOutputStream stream = new FileOutputStream(path)) {
stream.write(bytes);
}
Với Google ổi :
Files.write(bytes, new File(path));
Với Apache Commons :
FileUtils.writeByteArrayToFile(new File(path), bytes);
Tất cả các chiến lược này đều yêu cầu bạn cũng bắt được IOException.
Cũng kể từ Java 7, một dòng với java.nio.file.Files:
Files.write(new File(filePath).toPath(), data);
Trong đó dữ liệu là byte của bạn [] và filePath là một Chuỗi. Bạn cũng có thể thêm nhiều tùy chọn mở tệp với lớp StandardOpenOptions. Thêm ném hoặc bao quanh với thử / bắt.
Paths.get(filePath);
thay vìnew File(filePath).toPath()
Từ Java 7 trở đi, bạn có thể sử dụng câu lệnh try-with-resource để tránh rò rỉ tài nguyên và làm cho mã của bạn dễ đọc hơn. Thêm về điều đó ở đây .
Để viết của bạn byteArray
vào một tập tin bạn sẽ làm:
try (FileOutputStream fos = new FileOutputStream("fullPathToFile")) {
fos.write(byteArray);
} catch (IOException ioe) {
ioe.printStackTrace();
}
Hãy thử một OutputStream
hoặc cụ thể hơnFileOutputStream
Tôi biết nó đã được thực hiện với InputStream
Trên thực tế, bạn sẽ ghi vào một đầu ra tệp ...
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] Tập tin vào Byte [] /////////////////// //
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] Byte [] thành tập tin ///////////////////// ///////
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);
}
Ví dụ cơ bản:
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) {}
Đây là chương trình mà chúng tôi đang đọc và in mảng byte bù và độ dài bằng cách sử dụng String Builder và Viết mảng byte có độ dài bù cho tệp mới.
` Nhập mã vào đây
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 trong bảng điều khiển: fghij
O / P trong tệp mới: cdefg
Bạn có thể thử Cactoos :
new LengthOf(new TeeInput(array, new File("a.txt"))).value();
Thêm chi tiết: http://www.yegor256.com/2017/06/22/object-oriented-input-output-in-cactoos.html