如何检查子文件夹文本文件是否存在
How to check if sub-folder text file exists
我正在尝试搜索子文件夹中的文本文件是否存在。
这是我使用的代码:
'Checks the program's root folder to see if the root folder exists.
Dim FolderName = New DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Cake Orders\" & TextBox1.Text))
Dim McKnwoll As String = Path.Combine(FolderName.FullName, Trim(TextBox2.Text) & (" ") & Trim(TextBox3.Text) + ".RTO")
If Not McKnwoll.Exists Then
‘Message to user that file does not exist in sub-folder
Else
‘Message to user that file does exists in sub-folder
End If
我收到一条错误消息,提示 'Exists' 不是 'String' 的成员。如何重新编写代码以检查名称格式为 "TextBox2.Text & (" ") & TextBox3.Text + ".RTO"; 的文本文件是否存在。
我正在使用 Visual Basic 2010 Express。谢谢。
File.Exists
returns 一个布尔值,表示某个路径下的文件是否存在:
If File.Exists(pathToFile) Then
...
End If
请务必在源代码文件的顶部包含 Imports System.IO
。
您似乎对编程很陌生。欢迎。
你得到的那个错误消息('Exists' 不是 'String' 的成员)准确地告诉你出了什么问题:你试图询问一个字符串(一些文本)它是否存在,但是什么你喜欢做的是询问一个文件是否存在。
提供文件信息的class叫做"FileInfo",FileInfo有一个"Exists"属性可以调用:
Dim myFileInfo As New FileInfo(McKnwoll)
If myFileInfo.Exists Then
'do something
End If
这是面向对象的答案,Heinzi 的更面向服务的答案当然也有效。
我注意到您的代码还有其他几个小问题,例如
"Cake Orders\" & TextBox1.Text
不使用 Path.Combine 但使用固定“\”作为目录分隔符进行字符串连接。或者这里没有真正使用DirectoryInfo,文件夹的字符串就足够了。
您还尝试在一个代码块中处理 3 个不同的问题(从用户界面读取值、构造文件的全名、检查文件是否存在)。我会将它们分成 3 个不同的(实际上是 4 个,我会添加另一个用于显示错误消息)。
你简单的几行代码可能会像这样复杂;-)
Imports System.IO
Imports System.Text
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ReadFileIfPossible(TextBox1.Text, TextBox2.Text, TextBox3.Text)
End Sub
Private Sub ReadFileIfPossible(subfolder As String, part1 As String, part2 As String)
'Get the path to the RTO file
Dim myFilePath As String = Nothing
Try
myFilePath = GetRtoFilePath(subfolder, part1, part2)
Catch ex As Exception
DisplayErrorMessage("Error constructing file name! Please check the values of TextBox1, TextBox2 and TextBox3.")
Return
End Try
'Get the file info
Dim myFile As FileInfo = Nothing
Try
myFile = New FileInfo(myFilePath)
Catch ex As Exception
DisplayErrorMessage(ex.Message)
Return
End Try
'Check whether it exists
Dim myExists As Boolean = False
Try
myExists = myFile.Exists 'it's IO, everything might throw an exception...
Catch ex As Exception
DisplayErrorMessage(ex.Message)
Return
End Try
'Display message if not found
If (Not myExists) Then
DisplayErrorMessage("File ""{0}"" could not be found!", myFilePath)
Return
End If
'Read the file
Dim myLines As String() = Nothing
Try
myLines = File.ReadAllLines(myFile.FullName, New UTF8Encoding(True))
Catch ex As Exception
DisplayErrorMessage(ex.Message)
Return
End Try
'Do something with it...
End Sub
Private Shared Function GetRtoFilePath(subfolder As String, part1 As String, part2 As String) As String
'Check args
If (subfolder Is Nothing) Then Throw New ArgumentNullException("subfolder")
If (part1 Is Nothing) Then Throw New ArgumentNullException("part1")
If (part2 Is Nothing) Then Throw New ArgumentNullException("part2")
'Normalize args
part1 = part1.Trim()
part2 = part2.Trim()
'Build path
Dim myDesktopPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Dim myFolderPath As String = Path.Combine(myDesktopPath, "Cake Orders")
myFolderPath = Path.Combine(myFolderPath, subfolder)
Dim myFileName As String = String.Format("{0} {1}.RTO", part1, part2)
Dim myResult As String = Path.Combine(myFolderPath, myFileName)
myResult = Path.GetFullPath(myResult)
'Return result
Return myResult
End Function
Private Sub DisplayErrorMessage(message As String, ParamArray args As Object())
Dim myMsg As String = String.Format(message, CType(args, Object()))
MsgBox(myMsg, MsgBoxStyle.OkOnly, "Error")
End Sub
End Class
玩得开心。
我正在尝试搜索子文件夹中的文本文件是否存在。
这是我使用的代码:
'Checks the program's root folder to see if the root folder exists.
Dim FolderName = New DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Cake Orders\" & TextBox1.Text))
Dim McKnwoll As String = Path.Combine(FolderName.FullName, Trim(TextBox2.Text) & (" ") & Trim(TextBox3.Text) + ".RTO")
If Not McKnwoll.Exists Then
‘Message to user that file does not exist in sub-folder
Else
‘Message to user that file does exists in sub-folder
End If
我收到一条错误消息,提示 'Exists' 不是 'String' 的成员。如何重新编写代码以检查名称格式为 "TextBox2.Text & (" ") & TextBox3.Text + ".RTO"; 的文本文件是否存在。
我正在使用 Visual Basic 2010 Express。谢谢。
File.Exists
returns 一个布尔值,表示某个路径下的文件是否存在:
If File.Exists(pathToFile) Then
...
End If
请务必在源代码文件的顶部包含 Imports System.IO
。
您似乎对编程很陌生。欢迎。
你得到的那个错误消息('Exists' 不是 'String' 的成员)准确地告诉你出了什么问题:你试图询问一个字符串(一些文本)它是否存在,但是什么你喜欢做的是询问一个文件是否存在。
提供文件信息的class叫做"FileInfo",FileInfo有一个"Exists"属性可以调用:
Dim myFileInfo As New FileInfo(McKnwoll)
If myFileInfo.Exists Then
'do something
End If
这是面向对象的答案,Heinzi 的更面向服务的答案当然也有效。
我注意到您的代码还有其他几个小问题,例如
"Cake Orders\" & TextBox1.Text
不使用 Path.Combine 但使用固定“\”作为目录分隔符进行字符串连接。或者这里没有真正使用DirectoryInfo,文件夹的字符串就足够了。
您还尝试在一个代码块中处理 3 个不同的问题(从用户界面读取值、构造文件的全名、检查文件是否存在)。我会将它们分成 3 个不同的(实际上是 4 个,我会添加另一个用于显示错误消息)。
你简单的几行代码可能会像这样复杂;-)
Imports System.IO
Imports System.Text
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ReadFileIfPossible(TextBox1.Text, TextBox2.Text, TextBox3.Text)
End Sub
Private Sub ReadFileIfPossible(subfolder As String, part1 As String, part2 As String)
'Get the path to the RTO file
Dim myFilePath As String = Nothing
Try
myFilePath = GetRtoFilePath(subfolder, part1, part2)
Catch ex As Exception
DisplayErrorMessage("Error constructing file name! Please check the values of TextBox1, TextBox2 and TextBox3.")
Return
End Try
'Get the file info
Dim myFile As FileInfo = Nothing
Try
myFile = New FileInfo(myFilePath)
Catch ex As Exception
DisplayErrorMessage(ex.Message)
Return
End Try
'Check whether it exists
Dim myExists As Boolean = False
Try
myExists = myFile.Exists 'it's IO, everything might throw an exception...
Catch ex As Exception
DisplayErrorMessage(ex.Message)
Return
End Try
'Display message if not found
If (Not myExists) Then
DisplayErrorMessage("File ""{0}"" could not be found!", myFilePath)
Return
End If
'Read the file
Dim myLines As String() = Nothing
Try
myLines = File.ReadAllLines(myFile.FullName, New UTF8Encoding(True))
Catch ex As Exception
DisplayErrorMessage(ex.Message)
Return
End Try
'Do something with it...
End Sub
Private Shared Function GetRtoFilePath(subfolder As String, part1 As String, part2 As String) As String
'Check args
If (subfolder Is Nothing) Then Throw New ArgumentNullException("subfolder")
If (part1 Is Nothing) Then Throw New ArgumentNullException("part1")
If (part2 Is Nothing) Then Throw New ArgumentNullException("part2")
'Normalize args
part1 = part1.Trim()
part2 = part2.Trim()
'Build path
Dim myDesktopPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Dim myFolderPath As String = Path.Combine(myDesktopPath, "Cake Orders")
myFolderPath = Path.Combine(myFolderPath, subfolder)
Dim myFileName As String = String.Format("{0} {1}.RTO", part1, part2)
Dim myResult As String = Path.Combine(myFolderPath, myFileName)
myResult = Path.GetFullPath(myResult)
'Return result
Return myResult
End Function
Private Sub DisplayErrorMessage(message As String, ParamArray args As Object())
Dim myMsg As String = String.Format(message, CType(args, Object()))
MsgBox(myMsg, MsgBoxStyle.OkOnly, "Error")
End Sub
End Class
玩得开心。