Judulnya mengatakan itu semua:
- Saya membaca di arsip tar.gz seperti itu
- memecah file menjadi array byte
- Ubah byte tersebut menjadi string Base64
- Ubah string Base64 itu kembali menjadi array byte
- Tulis kembali byte tersebut ke file tar.gz baru
Saya dapat mengonfirmasi bahwa kedua file memiliki ukuran yang sama (metode di bawah mengembalikan true) tetapi saya tidak dapat lagi mengekstrak versi salinannya.
Apakah saya melewatkan sesuatu?
Boolean MyMethod(){
using (StreamReader sr = new StreamReader("C:\...\file.tar.gz")) {
String AsString = sr.ReadToEnd();
byte[] AsBytes = new byte[AsString.Length];
Buffer.BlockCopy(AsString.ToCharArray(), 0, AsBytes, 0, AsBytes.Length);
String AsBase64String = Convert.ToBase64String(AsBytes);
byte[] tempBytes = Convert.FromBase64String(AsBase64String);
File.WriteAllBytes(@"C:\...\file_copy.tar.gz", tempBytes);
}
FileInfo orig = new FileInfo("C:\...\file.tar.gz");
FileInfo copy = new FileInfo("C:\...\file_copy.tar.gz");
// Confirm that both original and copy file have the same number of bytes
return (orig.Length) == (copy.Length);
}
EDIT: Contoh kerja jauh lebih sederhana (Terima kasih kepada @TS):
Boolean MyMethod(){
byte[] AsBytes = File.ReadAllBytes(@"C:\...\file.tar.gz");
String AsBase64String = Convert.ToBase64String(AsBytes);
byte[] tempBytes = Convert.FromBase64String(AsBase64String);
File.WriteAllBytes(@"C:\...\file_copy.tar.gz", tempBytes);
FileInfo orig = new FileInfo(@"C:\...\file.tar.gz");
FileInfo copy = new FileInfo(@"C:\...\file_copy.tar.gz");
// Confirm that both original and copy file have the same number of bytes
return (orig.Length) == (copy.Length);
}
Terima kasih!
c#
base64
streamreader
system.io.fileinfo
darkpbj.dll
sumber
sumber
Jawaban:
Jika Anda ingin karena alasan tertentu mengonversi file Anda ke string base-64. Seperti jika Anda ingin menyebarkannya melalui internet, dll ... Anda bisa melakukannya
Dan terkait, baca kembali ke file:
sumber
sumber
java
jika OP menggunakanc#
?