'文件'是一种类型,不能用作表达式Error

时间:2015-06-17 19:38:00

标签: vb.net encryption syntax error-handling

我想创建一个使用Rijndael加密文件列表的加密器,这就是我创建一个基本应用程序的原因,列表框列出了特定驱动器中的所有给定文件。使用以下代码:

Imports System.IO

Public Class Form1

Public Sub DirSearch(ByVal sDir As String)
    Try
        For Each dir As String In Directory.GetDirectories(sDir)
            For Each file In Directory.GetFiles(dir, "*.pdf")
                lstFilesFound.Items.Add(file)
                FileToBase64(lstFilesFound.Items.Add(file))
            Next
            DirSearch(dir)
        Next
    Catch ex As Exception
        Debug.WriteLine(ex.Message)
    End Try
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    DirSearch("c:\")

End Sub

它按预期工作但当我尝试将此代码与此合并时: http://www.codeproject.com/Articles/12092/Encrypt-Decrypt-Files-in-VB-NET-Using-Rijndael

它给出了错误 '文件'是一种类型,不能用作表达式。

2 个答案:

答案 0 :(得分:2)

您正在导入包含名为File的类型的命名空间。这会导致For Each语句发生冲突。这是匈牙利表示法有用的一个例子。将For Each语句更新为:

        For Each objFile In Directory.GetFiles(dir, "*.pdf")
            lstFilesFound.Items.Add(objFile)
            FileToBase64(lstFilesFound.Items.Add(objFile))
        Next

答案 1 :(得分:0)

    For Each dir As String In Directory.GetDirectories(sDir)
        For Each fi as File In Directory.GetFiles(dir, "*.pdf")
            lstFilesFound.Items.Add(fi)
            FileToBase64(lstFilesFound.Items.Add(fi))
        Next

您无法将FILE作为add()参数传递,因为它未实例化。而是使用上面的代码。