Convert a VERY LARGE binary file into a Base64String incrementally

后端 未结 3 1384
旧时难觅i
旧时难觅i 2021-01-04 19:25

I need help converting a VERY LARGE binary file (ZIP file) to a Base64String and back again. The files are too large to be loaded into memory all at once (they throw OutOfMe

3条回答
  •  灰色年华
    2021-01-04 20:26

    Use this code:

    public void ConvertLargeFile(string source , string destination)
    {
        using (FileStream inputStream = new FileStream(source, FileMode.Open, FileAccess.Read))
        { 
    
            int buffer_size = 30000; //or any multiple of 3
    
            byte[] buffer = new byte[buffer_size];
            int bytesRead = inputStream.Read(buffer, 0, buffer.Length);
            while (bytesRead > 0)
            {
                byte[] buffer2 = buffer;
    
                if(bytesRead < buffer_size)
                {
                    buffer2 = new byte[bytesRead];
                    Buffer.BlockCopy(buffer, 0, buffer2, 0, bytesRead);
                }
    
                string base64String = System.Convert.ToBase64String(buffer2);
                File.AppendAllText(destination, base64String);
    
                bytesRead = inputStream.Read(buffer, 0, buffer.Length);
    
            }
        }
    }
    

提交回复
热议问题