午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

java - 字節(jié)流轉(zhuǎn)成字符串之后,在通過字符串轉(zhuǎn)成字節(jié)流后的文件為什么會不一樣?

瀏覽:204日期:2024-01-05 11:01:54

問題描述

public static void main(String[] args) throws Exception {File sourceFile = new File('/home/joy/圖片/img1-lg.jpg');File tempFile = new File('/home/joy/桌面/TempFile');saveTempFile(sourceFile, tempFile);String str = byteToString(tempFile);File saveFile = new File('/home/joy/桌面/saveFile.jpg');StringTobyte(str,saveFile); } // 保存臨時文件 public static void saveTempFile(File sourceFile, File tempFile) throws Exception {FileInputStream inputStream = new FileInputStream(sourceFile);FileOutputStream fileOutputStream = new FileOutputStream(tempFile);byte[] buf = new byte[10 * 1024];int readLeng = 0;while ((readLeng = inputStream.read(buf)) != -1) { fileOutputStream.write(buf, 0, readLeng); fileOutputStream.flush();}fileOutputStream.close();inputStream.close(); } // 文件字節(jié)轉(zhuǎn)字符串 public static String byteToString(File file) throws Exception {StringBuilder returnDatas = new StringBuilder();FileInputStream fileInputStream = new FileInputStream(file);byte[] buf = new byte[10 * 1024];int readLenth = 0;while ((readLenth = fileInputStream.read(buf)) != -1) { returnDatas.append(new String(buf,0,readLenth));}fileInputStream.close();return returnDatas.toString(); } // 字符串轉(zhuǎn)文件 public static void StringTobyte(String str,File file) throws Exception {FileOutputStream fileOutputStream = new FileOutputStream(file);fileOutputStream.write(str.getBytes());fileOutputStream.close(); }

代碼大意:把一張圖片通過字節(jié)流轉(zhuǎn)成一個字符串,然后在獲取該字符串的字節(jié)后還原為文件。理解中,字符只是多帶一層編碼,還原成字節(jié)后應(yīng)該還是能獲取到源文件的呀。

問題解答

回答1:

while ((readLenth = fileInputStream.read(buf)) != -1) { returnDatas.append(new String(buf,0,readLenth));}

二進(jìn)制圖片文件read出來的不是合法的字符串,其中無法解析的二進(jìn)制數(shù)據(jù)會被濾掉參考 javadoc 中的描述:

This method always replaces malformed-input and unmappable-character sequences with this charset’s default replacement string.

回答2:

編碼和解碼不一定是無損的。你從一個圖片文件讀出一個能無損編解碼的字節(jié)流的可能性非常小。

new String( new byte[] { 0xff } ).getBytes()=> [-17, -65, -67]回答3:

首先保證序列化,你可以用base64,才能保證轉(zhuǎn)回來沒問題

標(biāo)簽: java
主站蜘蛛池模板: 成年人香蕉视频 | 免费又黄又爽又色的视频 | 一区二区蜜桃 | www.亚洲色图.com | 一本av在线| 日韩三级视频在线播放 | 日本久久中文字幕 | 一级片特黄 | 成人一级视频 | 色91视频 | 亚洲婷婷丁香 | 日韩av综合| 香蕉视频在线播放 | 日韩精品一区二区在线 | 亚洲一区二三区 | 丁香六月激情综合 | 国产精品第四页 | 中文字幕在线观看视频免费 | 久久国产精品免费视频 | 伊人久久精品一区二区三区 | 米奇7777狠狠狠狠视频 | 国产在线一区二区三区四区 | 亚洲激情视频网 | 亚洲资源在线播放 | 午夜探花在线观看 | 欧美精品一二三 | 欧美一级做性受免费大片免费 | 国产成人一级片 | 免费一级淫片 | 久久久青草 | 免费日本黄色 | 99资源在线 | 四虎免费在线视频 | 91九色视频 | 亚洲高清av在线 | 国产成年妇视频 | 日韩欧美三区 | 国模精品一区 | 日韩福利视频导航 | 欧美亚洲专区 | 日本精品一区二区在线观看 |