我试图让我的程序从visual basic上的文件读取,但它一直说该文件不存在,我尝试过不同的文件路径和其他东西,但我似乎无法让它工作。
我的代码是:
Option Strict On
Imports System.IO
Public Class MOTform
Dim custfile As StreamReader
Dim strCustArray() As String
Dim strCustDetails As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
radMOTYes.Checked = True
If File.Exists("cust_db.txt") Then
' Open the file.
custfile = File.OpenText("cust_db.txt")
Else
MessageBox.Show("cust_db.txt" & " does not exist.")
End If
strCustDetails = custfile.ReadLine()
strCustArray = Split(strCustDetails, ",")
Me.Text = strCustDetails
custfile.Close()
End Sub
答案 0 :(得分:0)
转到要读取的文件,右键单击它,单击“属性”,从“位置”复制路径并将其插入代码
答案 1 :(得分:0)
您的代码希望该文件位于程序运行的同一文件夹中,因为您没有任何类型的路径。在部署最终可执行文件时这很好,因为那里没有BIN \ DEBUG 在VS内部调试时,您需要在该文件夹中具有该文件,原因相同。您的调试exe在该文件夹中运行。您可以将txt文件添加到项目中,并将属性Copy to Output Directory更改为“始终复制”。
但是,将数据文件保存在运行程序的同一文件夹中并不是一种好习惯,特别是如果文件不是只读文件的话。 如果将应用程序部署在某种保留文件夹(如C:\ program files)中,操作系统可能会阻止您的应用程序更改该文件。
我建议使用配置文件添加AppSettings键来指定保存文件的文件夹,然后在运行时读取该键以构建路径
例如
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
radMOTYes.Checked = True
Dim fullFileName = Path.Combine(ConfigurationManager.AppSettings("DataFolder"), "cust_db.txt")
If File.Exists(fullFileName) Then
' Open the file.
custfile = File.OpenText(fullFileName)
Else
MessageBox.Show(fullFileName & " does not exist.")
End If
然后
{{1}}
通过这种方式,您可以更改配置文件,使文件最适合您的场景