一、File轉byte數組
將File轉為byte數組的方法有很多種,但最為常見的莫過於使用 FileInputStream。
File file = new File("example.txt");
byte[] bytesArray = new byte[(int) file.length()];
FileInputStream fis = new FileInputStream(file);
fis.read(bytesArray);
這段代碼先是利用File的length()方法得到文件長度,再創建一個byte數組,最後使用FileInputStream將文件讀取進來。需要注意的是,FileInputStream並不是自動關閉的,需要手動進行關閉操作。
try {
// do something here
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
二、file文件轉byte
另外一種將File轉為byte的方法是使用 Apache Commons IO 工具包中的 FileUtils 類。
File file = new File("example.txt");
byte[] byteArray = FileUtils.readFileToByteArray(file);
這段代碼很簡單,利用 FileUtils 的 readFileToBytyArray 方法將文件讀取,但需要注意的是這個方法會一次性將整個文件讀取進內存,當文件較大時可能會造成內存溢出。因此,這種方法僅適用於小文件的情況。
三、file轉bytes
除了將 File 轉為 byte 數組,還可以將 File 轉為 Bytes 類型。Bytes 類型是 Google Guava 工具包中的一個類型,可以看做是 byte 數組的包裝類。
File file = new File("example.txt");
Bytes bytes = Files.asByteSource(file).read();
這裡使用了 Google Guava 工具包中的 Files 類和 ByteSource 類,asByteSource() 方法將文件轉為 ByteSource 類型,然後再調用 read() 方法將文件讀出。
四、FTPFile怎麼轉成File
FTPFile 是 Apache Commons Net 庫中提供的 FTP 文件類,如果需要將其轉化為 File 類,可以使用 File 的 write() 方法,將 FTPFile 寫入到臨時文件中,再以該臨時文件構建 File 實例。
FTPFile ftpFile = new FTPFile();
File tempFile = File.createTempFile("ftpfile", ".tmp");
try (OutputStream out = new FileOutputStream(tempFile)) {
ftpClient.retrieveFile(ftpFile.getName(), out);
File file = new File(tempFile.getAbsolutePath(), ftpFile.getName());
}
這段代碼使用了 FTPClient.retrieveFile() 方法將 FTPFile 下載到一個臨時文件中,然後再以該臨時文件構建 File 實例。由於臨時文件的創建和刪除會增加磁盤 I/O 操作,因此需要盡量將臨時文件的存儲空間限制在 RAM 等高速存儲介質中,以減少 I/O 操作次數。
原創文章,作者:QIFRL,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/368931.html