private void SplitFileByLength(int length) { Encoding encoding = null; length = length - 100; //100个字的Buffer string str = FileOperationHelper.ReadFileContent(txbFilePath.Text, ref encoding, Encoding.UTF8); int fileIndex = 1; do { if (str.Length == 0) { break; } string content = str.Substring(0, Math.Min(str.Length, length)); str = str.Substring(content.Length); int i = Math.Min(str.IndexOf('\r'), str.IndexOf('\n')); if (i != -1) { content += str.Substring(0, i + 2); str = str.Substring(i + 2); } string newFile = GetWriteFilePath(fileIndex++); FileOperationHelper.WriteFile(newFile, encoding, content); rtbLogs.AppendText(newFile + "\r\n"); } while (true); }
private void SplitFileByLine(int maxLine) { Encoding encoding = null; string str = FileOperationHelper.ReadFileContent(txbFilePath.Text, ref encoding, Encoding.UTF8); string splitLineChar = "\r\n"; if (str.IndexOf(splitLineChar) < 0) { if (str.IndexOf('\r') > 0) { splitLineChar = "\r"; } else if (str.IndexOf('\n') > 0) { splitLineChar = "\n"; } else { MessageBox.Show("不能找到行分隔符"); return; } } string[] list = str.Split(new[] { splitLineChar }, StringSplitOptions.RemoveEmptyEntries); var fileContent = new StringBuilder(); int fileIndex = 1; for (int i = 0; i < list.Length; i++) { if (i % maxLine == 0) { if (i != 0) { string newFile = GetWriteFilePath(fileIndex++); FileOperationHelper.WriteFile(newFile, encoding, fileContent.ToString()); rtbLogs.AppendText(newFile + "\r\n"); fileContent = new StringBuilder(); } } fileContent.Append(list[i]); fileContent.Append(splitLineChar); } }