0

このコードは、ディレクトリをクロールするという意味で機能します。ただし、すべてのサブディレクトリで例外が発生し、ファイルを返すことができません。これは権限の問題ですか、それとも私のコードに何か問題がありますか?

ESファイルマネージャーはファイルを表示します。画像が含まれるフォルダーが少なくとも3つあります。

Sub AddImagesToMap(Dir As String)AsMap'画像のクロールツリー

Dim fn As String , i As Int

Dim CRList As List, Ext As String

Try

    CRlist.initialize

    CRList=File.ListFiles(Dir)

    For i = 0 To CRlist.Size-1'jpg,png and gif

        fn=CRList.Get(i)

         Select fn     'ignore some system folders

            Case "/dev"   

            Case "/proc"

            Case "/sys"

            Case "/system"

            Case Else

                If File.IsDirectory(Dir,CRList.Get(i)) Then

                    Log("Dir:"&fn)

                    AddImagesToMap(fn)

                Else

                    Log(fn)

                    Ext= common.FileExt(fn)

                    If ext.ToLowerCase="jpg" OR ext.ToLowerCase="png" OR ext.ToLowerCase="gif" Then

                        Imagelist.Put(fn, Dir)

                    End If

                End If
        End Select

    Next

Catch

    Log ("error:"&Dir)

End Try

サブ終了

4

3 に答える 3

0

これで問題が解決すると思います。ディレクトリにファイルがあるかどうかを確認すると、空である可能性があります。私も File.ListFiles 関数を使用しました。フォルダーが空の場合、初期化されていない結果が返されます。初期化されていない変数を使用しようとすると、例外が発生します。これが私がしたことです:

f1 = File.ListFiles(x)
If f1.IsInitialized=False Then
    f1.Initialize
End If

ところで、私が File.ListFiles 関数を理解しようとしていたとき、あなたが B4A に投稿したこのコードは、私が見つけた唯一の例でした。これで問題が解決することを願っています。

于 2011-10-31T05:01:17.443 に答える
0

少し遅いことはわかっていますが、私はそれを理解しました。すべてのファイルを取得する方法は次のとおりです。

Sub AddImagesToMap(Dir As String) 'crawl tree for files
Dim fn As String , i As Int
Dim CRList As List
Try
    CRList.initialize
    CRList=File.ListFiles(Dir)

    For i = 0 To CRList.Size-1'jpg,png and gif
        fn=CRList.Get(i)
                If File.IsDirectory(Dir,CRList.Get(i)) Then
                    Log("Dir: "&fn)
                    AddImagesToMap(Dir & "/" & fn)
                Else
                        Log(fn & " - " & Dir)
                End If
    Next
Catch
    Log ("Error: "&Dir)
End Try
End Sub

同じ質問で多くの人を助けてくれることを願っています。

編集:これは私のより良いバージョンです。ここでは、ファイルの種類を並べ替えます。

Sub AddImagesToMap(Dir As String)
Dim fn As String , i As Int
Dim CRList As List, Ext As String
Try
    CRList.initialize
    CRList=File.ListFiles(Dir)

    For i = 0 To CRList.Size-1
        fn=CRList.Get(i)

                If File.IsDirectory(Dir,CRList.Get(i)) Then
                    AddImagesToMap(Dir & "/" & fn)
                Else

                If fn.Contains(".") Then
                Ext=fn.SubString(fn.LastIndexOf("."))
                End If

                Select Case Ext

                Case ".jpg"
                    Log(fn & " - " & Dir)

                Case ".png"
                    Log(fn & " - " & Dir)

                End Select

                End If
    Next
Catch
    Log ("Error: "&Dir)
End Try
End Sub
于 2015-04-20T05:15:06.130 に答える