我想让我的vb程序从文件中读取

时间:2017-05-04 21:24:40

标签: vb.net filesystems

我试图让我的程序从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

2 个答案:

答案 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}}

通过这种方式,您可以更改配置文件,使文件最适合您的场景