Frage

Ich versuche, von ein paar Dateien zu lesen in so etwas wie dies mit

IO.foreach("TeamFields.txt") { |line| fieldNames.push(line.chomp) }

Es funktioniert gut, wenn die von der Kommandozeile ausgeführt wird, aber wenn ich mit Schuhen zu einem EXE-Paket und führen Sie es kann die Datei nicht finden. Gibt es eine Möglichkeit, einen Pfad relativ zu dem die EXE-Datei angeben, oder muss ich die volle Filepath zur Verfügung stellen müssen (zum Beispiel „c: \ files \ TeamFields.txt“)? Danke für die Hilfe.

War es hilfreich?

Lösung

Das ist, da die ausführbare Datei nicht mit dem korrekten aktuellen Verzeichnis ausgeführt werden.

Sie entweder das aktuelle Verzeichnis fixiert (zum Beispiel in der Verknüpfung) oder ändern Sie Ihr Ruby-Programm, um automatisch das Arbeitsverzeichnis in das Programmverzeichnis festgelegt mit:

Dir.chdir(File.dirname($PROGRAM_NAME))

Andere Tipps

Sie müssen, bevor sie relativ „Aktuelles Anwendungsverzeichnis“ richtig einzustellen. Der Benutzer kann die App mit verschiedenem Start dir ausführen oder das System Ihrer Anwendung mit verschieden dir anrufen kann.

Wenn betreffenden Dateien in den Ordner Ihrer App sind, das einzige, was Sie tun müssen, um diesen Ordner zu erhalten, und legen Sie es aktuell sein.

ich nicht Programm in Ruby, aber ich habe mit Fenstern, und die Chancen der relative Pfad von der Position der EXE-Datei basiert.

Also, ja, du bist wahrscheinlich besser dran, einen vollständigen Pfad für die Dateinamen übergeben.

Die Konstante __FILE__ wird den vollständigen Pfad auf die derzeit ausgeführte Datei enthalten. Anschließend können Sie Methoden der File-Klasse verwenden, um den Dateinamen abzustreifen, den relativen Pfad anhängen für was auch immer andere Datei in Ihrem Paket ist es Sie wollen, und das Ergebnis lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top