C# - Base64로 File Encoding / Decoding


파일이 너무 크면 오류가 발생하므로, 이럴때는 파일을 분할하여 encoding / decoding 하는 전략을 취해야 할듯함.

private void btnEncode_Click(object sender, EventArgs e)
{
  if (!string.IsNullOrEmpty(txtInFile.Text))
  {
    FileStream fs = new FileStream(txtInFile.Text, 
                                   FileMode.Open, 
                                   FileAccess.Read);
    byte[] filebytes = new byte[fs.Length];
    fs.Read(filebytes, 0, Convert.ToInt32(fs.Length));
    string encodedData = 
        Convert.ToBase64String(filebytes,                 
                               Base64FormattingOptions.InsertLineBreaks);
    txtEncoded.Text = encodedData; 
  }
}

private void btnDecode_Click(object sender, EventArgs e)
{
  if (!string.IsNullOrEmpty(txtOutFile.Text))
  {
    byte[] filebytes = Convert.FromBase64String(txtEncoded.Text);
    FileStream fs = new FileStream(txtOutFile.Text, 
                                   FileMode.CreateNew, 
                                   FileAccess.Write, 
                                   FileShare.None);
    fs.Write(filebytes, 0, filebytes.Length);
    fs.Close(); 
  }
}

 

다른 예제

// The first method serializes a file on disk and returns the base64 string representation. 
public static string Serialize(string fileName)
{
 using (FileStream reader =new FileStream(fileName, FileMode.Open))
 {
  byte[] buffer =newbyte[reader.Length];
  reader.Read(buffer, 0, (int)reader.Length);
  return Convert.ToBase64String(buffer);
 }
} 

// The next deserializes a base64 string and writes it to the disk. 
public static void DeSerialize(string fileName, string serializedFile)
{
 using (System.IO.FileStream reader = System.IO.File.Create(fileName))
 {
  byte[] buffer = Convert.FromBase64String(serializedFile); 
  reader.Write(buffer, 0, buffer.Length);
 }
}

 

광고

댓글 1개

댓글 남기기