Rumah > Soal Jawab > teks badan
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();
}
// 文件字节转字符串
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();
}
// 字符串转文件
public static void StringTobyte(String str,File file) throws Exception {
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(str.getBytes());
fileOutputStream.close();
}
代码大意:把一张图片通过字节流转成一个字符串,然后在获取该字符串的字节后还原为文件。
理解中,字符只是多带一层编码,还原成字节后应该还是能获取到源文件的呀。
黄舟2017-04-18 10:55:53
while ((readLenth = fileInputStream.read(buf)) != -1) {
returnDatas.append(new String(buf,0,readLenth));
}
Fail imej binari yang dibaca bukan rentetan undang-undang, dan data binari yang tidak boleh dihuraikan akan ditapis keluar
Rujuk penerangan dalam javadoc:
Kaedah ini sentiasa menggantikan urutan input yang tidak betul dan urutan aksara yang tidak boleh dipetakan dengan rentetan penggantian lalai set aksara ini.
迷茫2017-04-18 10:55:53
Pengekodan dan penyahkodan tidak semestinya tidak rugi. Kemungkinan anda membaca aliran bait daripada fail imej yang boleh dikodkan dan dinyahkod tanpa kehilangan adalah sangat kecil.
new String( new byte[] { 0xff } ).getBytes()
=> [-17, -65, -67]
PHP中文网2017-04-18 10:55:53
Mula-mula pastikan bersiri Anda boleh menggunakan base64 untuk memastikan tiada masalah untuk menukar semula.