2011年6月20日月曜日

→→→ひとつのファイルを多数のファイルに

ひとつのファイルを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 件のコメント:

コメントを投稿