우선 레이블을 사용하여 단순히 값을 저장하지 마십시오. 대신 변수를 사용해야합니다. 변수가 그 대상입니다.
또 다른 조언은 항상 Path.Combine
을 사용하여 경로의 각 부분이 구분 기호로 끝나는 지 여부를 걱정할 필요가 없습니다. 당신이 삽입 될 경우, 그러나
Sub SplitAndWriteLineByLine()
Dim Founds As HashSet(Of String) 'Don't forget to initialize and fill your HashSet
Dim maxLinesPerFile As Integer = 250000
Dim fileNum As Integer = 0
Dim counter As Integer = 0
Dim filename As String = String.Empty
Dim writer As IO.StreamWriter = Nothing
For Each line As String In Founds
If counter Mod maxLinesPerFile = 0 Then
fileNum += 1
filename = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
$"Sorted_byKING\sorted{fileNum.ToString}.txt")
If writer IsNot Nothing Then writer.Close()
writer = New IO.StreamWriter(filename)
End If
writer.WriteLine(line)
counter += 1
Next
writer.Dispose()
End Sub
: 이제
는 귀하의 질문에 대답 : 당신이 라인으로 텍스트 줄을 삽입하려는 경우
을, 당신은 같은 것을 사용할 수 있습니다 을 HashSet에서 그대로 사용하면 한 행씩 작성할 필요가 없으므로 한 번에 한 줄씩 "묶음"을 작성할 수 있습니다. 다음과 같은 것을 사용할 수 있습니다 :
Sub SplitAndWriteAll()
Dim Founds As HashSet(Of String) 'Don't forget to initialize and fill your HashSet
Dim maxLinesPerFile As Integer = 250000
Dim fileNum As Integer = 0
Dim filename As String = String.Empty
For i = 0 To Founds.Count - 1 Step maxLinesPerFile
fileNum += 1
filename = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
$"Sorted_byKING\sorted{fileNum.ToString}.txt")
IO.File.WriteAllLines(filename, Founds.Skip(i).Take(maxLinesPerFile))
Next
End Sub
두 번째 것을 단 한번만 테스트하십시오. 이 두 가지 모두 훌륭해 보이지만 고맙습니다. –