C# StreamReader -> relative Pfade

Abcd12345

Lt. Junior Grade
Registriert
März 2006
Beiträge
483
Hi,

Ich möchte gerne Daten aus einer TextDatei auslesen. Des klappt auch wunderbar nur übergibt man leider bei der erzeugung des StreamReadObjektes ja immer den absoluten Pfad also "C:/Documents and Settings/abcdpx/My Documents/Visual Studio 2008/Projects/MarioEditor/MarioEditor/bin\Debug).

Wenn ich das Programm jetzt auf einem andern Rechner ausführen möchte exstiert der Ordner vermutlich garnicht und es kommt zum absturtz :(

Wie kann ich es nun hinbekommen, dass er immer im Debug bzw Release Verzeichnis nach den Datein vom Hauptprojekt Verzeichnis aus gesehen sucht, so dass die Datein auch auf andern Rechnern gefunden werden können?

Code:
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class LoadMap
    {
        StreamReader myFile;

        public LoadMap(string filename)
        {
            myFile = new StreamReader(filename);
        }
  

        public  string Line()
        {
           return myFile.ReadLine();
          
        }

        public void End()
        {
            myFile.Close();
        }
    }
}

Das ist bis jetzt mein Code

Würde mich natürlich sehr über Hilfe freuen :D
 
bin jetzt zwar in c# nicht so bewandert aber es müsste doch da möglich sein den aktuellen pfad rauszubekommen.. dann setzt du filename halt aus dem aktuellem pfad und dem namen der datei zusammen
 
Die Frage ist nur wie ich den aktuellen Pfad heruasbekomme. Den User irgendwelche Pfade eingeben zu lassen ist wohl nicht das Gelbe vom Ei
 
so müsste es gehen
Code:
/// <summary>
/// Holt den Pfad zum aktuellen Projekt-Ordner.
/// </summary>
/// <returns>der Pfad zum aktuellen Projekt-Ordner.</returns>
internal static string GetProjectPath()
{
 // Ergebnis: Debug- oder Release-Ordner im Projektordner.
         string projectPath = Environment.CurrentDirectory;
         // Mit jedem Durchlauf geht es im Verzeichnisbaum eine Stufe höher.
         for(int i = 0; i < 2; i++)
         {
            projectPath = System.IO.Path.GetDirectoryName(projectPath);
         }
         return projectPath + @"\";
}
 
Du bekommst den aktuellen Pfad auch mit.


Code:
using System.Text;
using System.IO;
using System.Windows.Forms; // hierfuer musst du noch die reference zum Projekt geben
namespace ConsoleApplication1
{
    class LoadMap
    {
        StreamReader myFile;

        public LoadMap(string filename)
        {
//Die methode "Path.Combine" baut die den richtigen filePath zusammen
// du muss dich um nichts kuemmern.
            myFile = new StreamReader(Path.Combine(Application.StartupPath, filename));
        }
  

        public  string Line()
        {
           return myFile.ReadLine();
          
        }

        public void End()
        {
            myFile.Close();
        }
    }
}
 
kreadon schrieb:
Du bekommst den aktuellen Pfad auch mit.


Code:
using System.Text;
using System.IO;
using System.Windows.Forms; // hierfuer musst du noch die reference zum Projekt geben
namespace ConsoleApplication1
{
    class LoadMap
    {
        StreamReader myFile;

        public LoadMap(string filename)
        {
//Die methode "Path.Combine" baut die den richtigen filePath zusammen
// du muss dich um nichts kuemmern.
            myFile = new StreamReader(Path.Combine(Application.StartupPath, filename));
        }
  

        public  string Line()
        {
           return myFile.ReadLine();
          
        }

        public void End()
        {
            myFile.Close();
        }
    }
}

Hi,

Danke das scheint gut zu funktonieren in einer Windowsanwendung. Das ganze sollte doch eigentlich auch mit einem XNA Projekt funktonieren, wenn ich einen Verweiß auf "System.Windows.Forms;" hinzufüge oder?

Gruß Abcd
 
Probiere es, ich habe noch nichts mit XNA gemacht.

EDIT: komplettzitate sind nicht gerne gesehen ;)
 
Zurück
Oben