Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 我试图让我的vb程序从文件中读取_Vb.net_Filesystems - Fatal编程技术网

Vb.net 我试图让我的vb程序从文件中读取

Vb.net 我试图让我的vb程序从文件中读取,vb.net,filesystems,Vb.net,Filesystems,我试图让我的程序在VisualBasic上读取一个文件,但它一直说该文件不存在,我尝试了不同的文件路径和其他方法,但我似乎无法让它工作 我的代码是: Option Strict On Imports System.IO Public Class MOTform Dim custfile As StreamReader Dim strCustArray() As String Dim strCustDetails As String Private Sub For

我试图让我的程序在VisualBasic上读取一个文件,但它一直说该文件不存在,我尝试了不同的文件路径和其他方法,但我似乎无法让它工作

我的代码是:

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

转到要从中读取的文件,右键单击该文件,单击“属性”,从位置复制路径并将其插入代码中

由于没有任何路径,代码希望该文件位于程序运行的同一文件夹中。当您部署最终可执行文件时,这很好,因为没有BIN\DEBUG。
在debug inside VS中,出于同样的原因,您需要将该文件放在该文件夹中。已调试的exe在该文件夹中运行。您可以将txt文件添加到项目中,并将属性更改为“始终复制”

但是,将数据文件保存在程序运行的同一文件夹中不是一个好做法,尤其是如果该文件不是只读的。
如果将应用程序部署在某种保留文件夹(如C:\program files)中,操作系统会阻止应用程序更改该文件

我建议使用配置文件添加AppSettings键来指定保存该文件的文件夹,然后在运行时读取该键以构建路径

比如说

<appSettings>
    <add key="DataFolder" value="C:\programdata\myappdatafolder"/>
</appSettings> 

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

是否在Visual Studio中运行此代码?请记住,在调试中,当前文件夹位于项目根BIN\debug(或x86变体)文件夹下,您应该指向
。Fileexists
到完全限定路径,以确保您在正确的文件夹中查找。是的,谢谢,它可以在那里工作。您可以将文件放在该文件夹之外吗?请阅读并获取。这不是debugmycodorme.Com。即使文件在文件夹外,它也可以工作,但是您必须将代码中的路径更改为新路径。我必须将其发送给我的讲师,以便文件路径不会与他的笔记本电脑上的路径不同吗,你的教授将无法从文件中读取,因为他的计算机上可能不存在该文件。我猜你的讲师只会检查你的代码而不运行它,因为他应该知道他没有你引用的文件。如果我的答案对你有帮助,也一定要给它打分
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