Datei ohne Endung öffnen

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von xxgamerz.

    Datei ohne Endung öffnen

    Hiho Com!

    Ich bräuchte eure Hilfe!


    Ich habe eine Datei, in der eine 12-Stellige Ziffernfolge ist. Die würde ich gerne auslesen. Das Problem ist nur, dass ich die Datei nicht geöffnet bekomme, da sie keine Endung besitzt.

    Kenn jemand die Lösung für das Problem?


    Die Datei sollte nicht erst mit OpenFileDialog oder ähnlichem gewählt werden müssen. Außerdem darf ihr keine Endung hinzugefügt werden.

    Danke schonmal im Vorraus.

    VB.NET-Quellcode

    1. IO.File.ReadAllText("C:\Users\User\Desktop\Bla")

    Die Datei heisst hier Bla ^^
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Also. Ich hab das mit IO.File versucht und - nichts. Im normalen Programm geht es, aber nicht in einer Klasse. ich hab es so versucht:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class MCVersion
    3. Shared Function GetVersion() As String
    4. Dim MCVersion_ As String
    5. Dim Path As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\.minecraft\bin\version"
    6. MCVersion_ = File.ReadAllText(Path)
    7. Return MCVersion_
    8. End Function
    9. End Class

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class MCVersion
    3. Public Function GetVersion As String
    4. Dim MCV As String
    5. Dim Path As String = Environment.GetFolderPath(Environment.Specialfolder.ApplicationData & "\.minecraft\bin\version"
    6. MCV = File.ReadAllText(Path)
    7. Return MCV
    8. End Function
    9. End Class


    Denke nicht, dass mein Code was bringen wird :D

    Ist eig. nur Shared durch Public ersetzt worden und MCVersion_ durch MCV D:
    So sollte es funktionieren:

    Klasse MCVersion

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class MCVersion
    3. Public Shared Function GetVersion() As String
    4. Dim MCV As String
    5. Dim Path As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\.minecraft\bin\version"
    6. MCV = File.ReadAllText(Path)
    7. Return MCV
    8. End Function
    9. End Class


    VB.NET-Quellcode

    1. Sub Main()
    2. Console.WriteLine(MCVersion.GetVersion())
    3. Console.ReadLine()
    4. End Sub

    Korrektur!!

    Ich glaube, das Problem liegt in der Pfadangabe.

    VB.NET-Quellcode

    1. Dim Path As String = Environment.GetFolderPath(Environment.Specialfolder.ApplicationData & "\.minecraft\bin\version)"


    Wenn ich den Code bei mir ausführe, enthält die Varaible

    VB.NET-Quellcode

    1. Path
    nach Belegung den Wert:
    "C:\Users\AngemeldeterBenutzername\AppData\Roaming\.minecraft\bin\version"

    Das kann so nicht funktionieren, weil der Punkt nicht gültiger Bestandteil einer Pfadangabe ist.

    Gruß, us4711
    Also. So gehts auch nicht. ich habs direkt im Form.Load-Ereignis mal versucht, nicht in extra Klasse. Da funktionierts.

    Aber ich brauche es eben in einer extra Klasse .__.



    #EDIT: Das liegt nicht am Punkt, aus der Form selbst gehts ja..
    Stimmt. Der Punkt ist zulässig.

    Bei mir funktioniert der Code von Rokky in der Form wie folgt:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim s = MCVersion.GetVersion
    4. End Sub
    5. End Class
    Irgendwas ist bei mir seehr Falsch. Es geht einfach nicht.
    Hier mal der ganze Code:

    Form1:

    VB.NET-Quellcode

    1. Imports WindowsApplication1.MCVersion
    2. Imports System.IO
    3. Public Class Form1
    4. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    5. End Sub
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. ComboBox1.SelectedIndex = 0
    8. Dim s = MCVersion.GetVersion
    9. Me.Text = s
    10. End Sub
    11. End Class



    Und die Extra Klasse:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class MCVersion
    3. Public Shared Function GetVersion() As String
    4. Dim MCV As String
    5. Dim Path As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\.minecraft\bin\version"
    6. MCV = File.ReadAllText(Path)
    7. Return MCV
    8. 'Keine Ahnung, warum es nicht geht.
    9. End Function
    10. End Class
    Hast Du schon geprüft, ob die Datei vorhanden ist?

    VB.NET-Quellcode

    1. Public Shared Function GetVersion() As String
    2. Dim filename As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft\bin\version")
    3. If Not IO.File.Exists(filename) Then Return "Version-Datei nicht vorhanden."
    4. Return IO.File.ReadAllText(filename)
    5. End Function

    xtts02 schrieb:


    VB.NET-Quellcode

    1. Public Shared Function GetVersion() As String
    2. Dim filename As String = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft\bin\version")
    3. If Not IO.File.Exists(filename) Then Return "Version-Datei nicht vorhanden."
    4. Return IO.File.ReadAllText(filename)
    5. End Function
    Das ist ja Programmcode vom Feinsten. :thumbdown:
    Was ist, wenn in der Datei zufällig "Version-Datei nicht vorhanden." drinsteht?

    VB.NET-Quellcode

    1. Public Shared Function GetVersion(ByRef content As String) As Boolean
    2. ' ...
    3. End Function

    @xxgamerz:
    Probier mal, eine endungslose Datei mit "\bla\version." (Punkt am Ende) zu öffnen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Was ist, wenn in der Datei zufällig "Version-Datei nicht vorhanden." drinsteht?

    Dann bekommste genau das, was drin steht. Passt also doch alles :P
    Spaß beiseite. Ob man an der Stelle irgendwas zurück gibt oder eine Exception auslöst, bleibt jedem überlassen. Mir geht es nur darum, dass man an dieser Stelle prüfen soll, ob der Pfad korrekt zusammengesetzt ist (Tippfehler, etc.) bzw. ob der zusammengesetzte Pfad existiert.

    xtts02 schrieb:

    Passt also doch alles :P
    Passt eben nicht.
    In meinem Beispiel kannst Du nicht unterscheiden, ob die Datei nicht da ist oder ob der Version-String so aussieht.
    Deswegen die Boolean-Variante, die gibt True zurück, wenn alles i.O. ist, ansonsten False.
    Einen Leerstring zurückzugeben ist auch nicht gut, denn die Datei könnte ebenfalls leer sein.
    ==> Programmierstil
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Da genügt ein Zweizeiler:

    VB.NET-Quellcode

    1. If Not IO.File.Exists(filename) Then
    2. ' nicht da
    3. End If
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!