O título diz tudo:
- Eu li em um arquivo tar.gz como este
- divida o arquivo em um array de bytes
- Converta esses bytes em uma string Base64
- Converta aquela string Base64 de volta em uma matriz de bytes
- Grave esses bytes de volta em um novo arquivo tar.gz
Posso confirmar que os dois arquivos têm o mesmo tamanho (o método abaixo retorna verdadeiro), mas não consigo mais extrair a versão da cópia.
Estou esquecendo de algo?
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: O exemplo de trabalho é muito mais simples (graças a @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);
}
Obrigado!
c#
base64
streamreader
system.io.fileinfo
darkpbj
fonte
fonte
Respostas:
Se você deseja, por algum motivo, converter seu arquivo em uma string de base 64. Tipo se você quiser repassar via internet, etc ... você pode fazer isso
E, correspondentemente, leia o arquivo:
fonte
fonte
java
se o OP usac#
?