VB代码报错:File.AppendAllText不是'String'的成员,求助解决
解决VB.NET中‘File.AppendAllText’不是‘String’的成员错误(错误代码30456)
错误原因
你在循环中定义了名为file的字符串变量,而File是System.IO命名空间下的核心类。由于VB.NET是大小写不敏感的语言,编译器会将File.AppendAllText误判为访问字符串变量file的成员,从而抛出该错误。
解决方案
有两种简单的修复方式:
方式1:重命名循环变量(推荐)
修改循环变量名,避免与File类名冲突:
Imports System.IO Module MainModule Sub Main() Dim sourcePath As String = "D:\GE" Dim targetPath As String = "C:\lstwhite" Dim logFile As String = "C:\lstwhite\Log.txt" Dim dataFiles() As String = Directory.GetFiles(sourcePath, "DA*.PAQ") Dim ptrinFiles() As String = Directory.GetFiles(sourcePath, "PTN*.PAQ") ' 将循环变量名从file改为filePath,避免类名冲突 For Each filePath As String In dataFiles.Concat(ptrinFiles) Dim fileInfo As New FileInfo(filePath) Dim fileName As String = fileInfo.Name Dim targetFile As String = Path.Combine(targetPath, fileName) Dim fileCreationTime As DateTime = fileInfo.LastWriteTime Dim timeDiff As TimeSpan = DateTime.Now.Subtract(fileCreationTime) If timeDiff.TotalHours < 2 Then fileInfo.MoveTo(targetFile) File.AppendAllText(logFile, fileName & vbCrLf) End If Next End Sub End Module
方式2:使用完全限定名调用方法
如果不想修改变量名,直接通过命名空间明确指定File类:
' 将原代码中的File.AppendAllText替换为System.IO.File.AppendAllText System.IO.File.AppendAllText(logFile, fileName & vbCrLf)
内容的提问来源于stack exchange,提问作者zizou
相关产品推荐
相关产品推荐

