2017-05-04 4 views
-4

Ich versuche, mein Programm aus einer Datei auf Visual Basic zu lesen, aber es sagt, dass die Datei nicht existiert, habe ich verschiedene Dateipfade und andere Dinge ausprobiert aber ich kann es nicht funktionieren.Ich versuche, mein vb-Programm aus einer Datei lesen

mein Code:

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

Haben Sie diesen Code in Visual Studio ausgeführt? Denken Sie daran, dass sich der aktuelle Ordner im Debug unter dem Ordner BIN \ DEBUG (oder x86-Variante) des Projekts befindet. – Steve

+0

Sie sollten auf 'klicken. Fileexistiert auf den vollständig qualifizierten Pfad, um sicherzustellen, dass Sie im richtigen Ordner suchen. –

+0

Ja, danke, dass es funktioniert, trotzdem kannst du die Datei außerhalb dieses Ordners haben? –

Antwort

0

gehen Sie auf die Datei, die Sie aus lesen möchten, direkt darauf klicken, klicken Sie auf Eigenschaften, kopieren Sie den Pfad von Ort und legen Sie es auf den Code

+0

es wird funktionieren, auch wenn die Datei außerhalb des Ordners ist, aber Sie müssen den Pfad im Code auf den neuen ändern –

+0

Ich muss es an meinen Dozenten senden, so würde der Dateipfad nicht anders sein als auf seinem Laptop? –

+0

Nun, Ihr Professor wird es nicht aus der Datei lesen können, weil diese Datei wahrscheinlich nicht auf seinem Computer existiert. Ich nehme an, dass Ihr Dozent nur Ihren Code überprüft, ohne ihn auszuführen, weil er wissen sollte, dass er nicht die Datei hat, auf die Sie verweisen. Achte auch darauf, meine Antwort zu bewerten, wenn sie dir geholfen hat –

0

Ihr Code erwartet die Datei in demselben Ordner, in dem Ihr Programm ausgeführt wird, da Sie über keinen Pfad verfügen. Dies ist in Ordnung, wenn Sie Ihre endgültige ausführbare Datei bereitstellen, da sich dort kein BIN \ DEBUG befindet.
In debug in VS stattdessen müssen Sie die Datei in diesem Ordner aus dem gleichen Grund haben. Ihre debugged exe wird in diesem Ordner ausgeführt. Sie können die txt-Datei zu Ihrem Projekt hinzufügen und die Eigenschaft Copy to Output Directory in Immer kopieren ändern.

Es ist jedoch nicht empfehlenswert, eine Datendatei in demselben Ordner zu speichern, in dem das Programm ausgeführt wird, insbesondere dann, wenn die Datei nicht schreibgeschützt ist.
Das Betriebssystem kann verhindern, dass Ihre Anwendung diese Datei ändert, wenn Sie Ihre Anwendung in einem reservierten Ordner (z. B. C: \ Programme) bereitstellen.

Ich schlage vor, die Konfigurationsdatei Hinzufügen eines AppSettings Schlüssel zu verwenden, um den Ordner angeben, in dem Sie die Datei zu halten und dann den Schlüssel zur Laufzeit liest Ihren Weg

Zum Beispiel

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

und dann zu bauen

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 

auf diese Weise können Sie die Konfigurationsdatei ändern, um Ihre Datei zu haben, wo ist am bequemsten für Ihr Szenario