.net 通过拆分数据将一个文件转换为十个文件
我有一个超过10行的文件。我想创建9个文件,每个文件包含相同数量的行,第10个文件包含相同数量的行和剩余的行 我目前通过以下方式从主文件获取数据:.net 通过拆分数据将一个文件转换为十个文件,.net,vb.net,.net,Vb.net,我有一个超过10行的文件。我想创建9个文件,每个文件包含相同数量的行,第10个文件包含相同数量的行和剩余的行 我目前通过以下方式从主文件获取数据: Dim sData As String Using sr As New StreamReader(vsFilePath) sData = sr.ReadToEnd End Using Dim oDataList As New List(Of String) oDataList.AddRange(sData.Split(Convert.To
Dim sData As String
Using sr As New StreamReader(vsFilePath)
sData = sr.ReadToEnd
End Using
Dim oDataList As New List(Of String)
oDataList.AddRange(sData.Split(Convert.ToChar(ControlChars.Lf)))
如何将oDataList解析为10个文件,而不必遍历每个文件和oDataList逐行写入
有没有更好的方法让他们知道我目前正在做什么?如果行的顺序不重要,您可以执行以下操作将内容分成10个相等的部分,否则,可能需要通过数据进行双循环(一个用于计数和存储行,另一个用于写入行)
Dim sData As String
Dim counter As Integer
Dim sw(10) As StreamWriter
For i As Integer = 0 To 9 Step 1
sw(i) = New StreamWriter("path" + something)
Next
Using sr As New StreamReader("path")
sData = sr.ReadLine()
While sData IsNot Nothing
sw(1 Mod counter).WriteLine(sData)
counter += 1
sData = sr.ReadLine
End While
End Using
'add a finally block for closing the 10 streams
- 打开10个输出文件
- 重复输入文件中的每一行,执行以下操作:
- 将行元素拆分为行元素,然后将其适当地切片
- 对于每个切片,将其写入相应的文件
小提琴。您只需要遍历oDataList一次。如果原始文件中的行数相对较少,则可以将它们全部读入一行代码中的数组中。从这里开始,生成10个输出文件是一个简单的操作。这里有一个这样的方法
Dim path As String = "C:\Temp\test\input.txt"
Dim outputPath As String = "C:\Temp\test\output{0}.txt"
Dim lines As String() = File.ReadAllLines(path)
Dim files As Integer = 10
Dim linesPerFile As Integer = lines.Length \ 10
Dim currentLine As Integer = 0
For i As Integer = 0 To files - 1
Dim iterations As Integer = linesPerFile
If i = files - 1 Then
iterations = lines.Length - currentLine
End If
Using writer As New StreamWriter(String.Format(outputPath, i))
For j As Integer = 0 To iterations - 1
writer.WriteLine(lines(currentLine))
currentLine += 1
Next
End Using
Next
stringpath=@“C:\Temp\test\input.txt”;
字符串outputPath=@“C:\Temp\test\output{0}.txt”;
string[]lines=File.ReadAllLines(路径);
int文件=10;
int linesPerFile=行。长度/10;
int currentLine=0;
对于(int i=0;i
行和行不是一样吗?请注意:ControlChars.Lf
是一个Char
,不需要转换成Char
…结果表明顺序很重要。我把你的模型改成了同样的订单。谢谢
string path = @"C:\Temp\test\input.txt";
string outputPath = @"C:\Temp\test\output{0}.txt";
string[] lines = File.ReadAllLines(path);
int files = 10;
int linesPerFile = lines.Length / 10;
int currentLine = 0;
for (int i = 0; i < files; ++i)
{
int iterations = linesPerFile;
if (i == files - 1)
{
iterations = lines.Length - currentLine;
}
using (StreamWriter writer = new StreamWriter(string.Format(outputPath, i)))
{
for (int j = 0; j < iterations; j++)
{
writer.WriteLine(lines[currentLine++]);
}
}
}