如何解决如何在不截断行的情况下对文件进行分区,使其只有 30mb
我想拆分文件,使每个文件只有 30mb。如果超过 30mb,则必须创建另一个文件并继续写入。该文件包含字符串信息,并且在每个文件中它必须有一个标题。按照编写的代码进行操作:
const int bufferSize = 30 * 1024 * 1024;
const string format = @"{0}\{1}_{2:ddMMyyyhhMMssffff}_(Parte {3}){4}";
int index = 1;
byte[] buffer = new byte[bufferSize];
var header = Encoding.ASCII.GetBytes(File.ReadLines(arquivo).ToArray()[0]);
var arquivoEmBytes = File.ReadAllBytes(arquivo);
byte[] newline = Encoding.ASCII.GetBytes(Environment.NewLine);
string folder = Path.GetDirectoryName(arquivo);
string fileName = Path.GetFileNameWithoutExtension(arquivo);
string extension = Path.GetExtension(arquivo);
string fileDestination = string.Format(format,folder,fileName,DateTime.Now,index,extension);
using (Stream input = File.OpenRead(arquivo))
{
while (input.Position < input.Length)
{
using (Stream output = File.Create(fileDestination))
{
int remaining = chunkSize,bytesRead;
while (remaining > 0 && (bytesRead = input.Read(buffer,Math.Min(remaining,bufferSize))) > 0)
{
if (index > 1)
{
output.Write(header,header.Length);
output.Write(newline,newline.Length);
}
output.Write(buffer,bytesRead);
remaining -= bytesRead;
if (remaining <= bufferSize)
{
chunkSize = remaining;
break;
}
}
}
index++;
fileDestination = string.Format(format,extension);
Thread.Sleep(500); // experimental; perhaps try it
}
}
问题在于它打破了文件行。有人可以帮我吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。