0

だから私は、拡張子に応じてアイテムを特定のディレクトリ(クリーンアップされているディレクトリ)に移動するデスクトップクリーナーを開発しています

ユーザーは、アイテムが配置されるフォルダーの名前を定義します。

ただし、ファイルを移動するコードは正しく機能しません。

Private Sub FlowButton1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FlowButton1.Click
    If CheckBox1.Checked Then
        Dim folderPathTextBox = options.TextBox1.Text
        Dim files() As String
        files = System.IO.Directory.GetFiles(options.FolderBrowserDialog1.SelectedPath, "*.txt")

        For Each file As String In files
            System.IO.File.Copy(file, options.TextBox1.Text & options.TextBox8.Text & options.TextBox2.Text & System.IO.Path.GetFileName(file))
        Next

    Else
    End If
  • options.TextBox1.Text=フォルダダイアログを使用して選択されたディレクトリEG: "C:\ directory"

  • options.TextBox8.Text=スラッシュで区切る="C:\ directory \"

  • options.TextBox2.Text=ユーザーEGImagesによって決定されたフォルダ名="C:\ directory \ images"

また、フォルダーを作成しない場合は、フォルダーが存在するかどうかをコードで確認する必要があります。

助けてくれてありがとう

4

3 に答える 3

0

コードを整理/簡素化するのに役立ついくつかのアイデア:

  1. TextBox'esに適切な名前を付けます。それができない場合は、意味のあるローカル変数を宣言し、それをコードで使用します。読みやすさが大幅に向上します。
  2. Path.Combineを使用して、結合C:\directoryImagesます。を取り除きTextBox8ます。
  3. パーツも安全にドロップできると思いますSystem.IO.Path.GetFileName(file)。ディレクトリをコピーターゲットとして使用できるはずです。 File.Copy2番目のパラメーターとしてファイル名が必要です。Path.Combine3つのパラメーターを受け入れるオーバーロードを使用し、ベースパス+ユーザー指定のフォルダー+ファイル名を組み合わせる必要があります。
  4. File.Copyを使用するときは、このファイルがまだターゲットにないことを確認してください。MSDNによると、Overwriting a file of the same name is not allowed
于 2012-10-26T01:24:38.207 に答える
0

フォルダ内のファイルを反復処理するもう1つの良い方法は、DirectoryInfoDimdiをDirectoryInfoとして使用することです。

di = My.Computer.FileSystem.GetDirectoryInfo( "path to directory")For Each f as FileInfo In di.GetFiles( "*。txt")'FileInfoオブジェクトには、コピーを含むすべての種類のオプションがあります。次

DirectoryInfoは、ディレクトリが実際に存在するかどうかを判断するためのExistsプロパティも提供します。

于 2012-10-26T02:50:10.040 に答える
0

サブフォルダのすべての画像を新しいフォルダに移動する方法を探していました。これが私が仕事をするために思いついたものです。

    Dim WantedExtention As String = ".Your Type"
    Dim sourcePath As String
    Dim destinationPath As String

    'Somewhere else in the code to set the path is by paste not folder selection.
    FolderInfo = New DirectoryInfo(txtSelectedPath.Text)
    SelectedFolder = txtSelectedPath.Text
    Try
        'Check if it exits (Why its not False, Not too sure, but this worked)
        If Directory.Exists(SelectedFolder + "Move Folder") = True Then
            Directory.CreateDirectory(SelectedFolder + "Move Folder")
        End If
        destinationPath = Path.Combine(SelectedFolder + "Move Folder")

        For Each subdir In FolderInfo.GetDirectories()
            'Since I am making the sub folder in the Root Folder I had to Skip the folder
            If (subdir.Name = "Move Folder") Then
                Exit For
            End If
            sourcePath = Path.Combine(SelectedFolder, subdir.Name)

            Dim picList As String() = Directory.GetFiles(sourcePath, "*" + WantedExtention)

            For Each f As String In picList
                Dim fname As String = f.Substring(sourcePath.Length + 1)'Don't know why this is hear yet - but ya need it
                FileCopy(Path.Combine(sourcePath, fname), Path.Combine(destinationPath, fname))
            Next

        Next
        lblCompleted.Text = "COMPLETED"
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
于 2012-11-17T16:29:27.503 に答える