ひとつのファイルを255ファイルまでに分割する処理
Buttonを配置
<ファイル名,内容1,内容2>という例のファイル
先頭のファイル名をファイル名.txtというふうになる為重複注意。
Dドライブに作成
--------------------------------------------------
Private Structure Info
Public str() As String
End Structure
Dim WORK(1) As String
Dim ans(1) As String
Dim strOcc() As String
Dim FileName As String
Dim openFile1 As New OpenFileDialog()
Dim FileNum As Integer
Dim FileOutNum As Integer
Dim OutFileName(100) As String
Dim i As Integer = 0
Dim j As Integer = 0
Dim outcount As Integer = 0
Dim total As Integer = 0
Dim DataBuff As String
Private pInfo(1500000) As Info
------------------------------------------------------
Private Sub Button1_Click(・・・) Handles Button1.Click
ReadTab()
ReDim WORK(i - 1)
ReDim ans(i - 1)
Dim l, x, z, count As Integer
For l = 0 To i - 1
WORK(l) = pInfo(l).str(0)
If l = i - 1 Then
ans(l) = pInfo(l).str(0)
Write(count, x, WORK(l))
Else
ans(l) = pInfo(l + 1).str(0)
End If
z = StrComp(WORK(l), ans(l))
If z = 0 Then
x += 1
Else
Write(count, x, WORK(l))
x = 0
count += 1
End If
Next
Me.Close()
End Sub
------------------------------------------------------
Private Sub Write(ByVal count As Integer, ByVal x As Integer, ByVal fn As String)
FileOutNum = FreeFile()
OutFileName(count) = "D:\" & fn & ".txt"
FileOpen(FileOutNum, OutFileName(count), OpenMode.Output)
Dim n, l As Integer
For n = 0 To x
l = total
total += 1
Print(FileOutNum, pInfo(l).str(1))
Print(FileOutNum, ",")
PrintLine(FileOutNum, pInfo(l).str(2))
Next
FileClose(FileOutNum)
End Sub
-------------------------------------------------------
Private Sub ReadTab()
Dim k As Integer
openFile1.DefaultExt = "*.*"
openFile1.Filter = "テキスト(*.txt)|*.txt|すべてのファイル|*.*"
If openFile1.ShowDialog() = DialogResult.OK Then
Cursor.Current = Cursors.WaitCursor
FileName = openFile1.FileName
Else
Exit Sub
End If
FileNum = FreeFile()
FileOpen(FileNum, FileName, OpenMode.Input)
i = 0
Do Until EOF(FileNum)
If i > 1499999 Then
MessageBox.Show("読み込みデータが150万件を超えたため処理を中止します", "読み込みエラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
Me.Close()
Exit Sub
End If
DataBuff = LineInput(FileNum)
strOcc = Split(DataBuff, ",")
j = UBound(strOcc)
ReDim pInfo(i).str(j)
For k = 0 To j
pInfo(i).str(k) = strOcc(k)
Next
i += 1
Loop
FileClose(FileNum)
End Sub
0 件のコメント:
コメントを投稿