Dateipfad mit Backslash

Status
Nicht offen für weitere Antworten.

Pantoi

Aktives Mitglied
Hallo,
nachdem ich die 5 Seiten Suchergebnisse für "Dateipfad" durchgegangen
bin, bin ich zum Entschluss gekommen, dass ich entweder blind bin
oder es die Frage in der Form hier noch nicht gab ^^

Ich hab hier eine ini Datei aus der ich einige Informationen für mein Programm
bekomme. Unter anderem auch Dateipfade für ein paar .txt Dateien.
Das Problem mit den Dateipfaden ist:
Sie liegen in der Form

Path=.\login\Admin.txt vor

- soll heissen wenn ich
den Property-String von Path einlese, wird Java einen String in der Form:
.loginAdmin.txt speichern und diese Datei nicht öffnen können.

Ich kann den Dateipfad in dieser ini leider nicht umschreiben, d.h.
.\\login\\Admin.txt oder ./login/Admin.txt stehen nicht zur Debatte.

Wie bringe ich meinem Programm nun bei, diese Dateipfade richtig zu interpretieren?

MfG Pantoi
 

Pantoi

Aktives Mitglied
Ich lese die Datei aktuell als Property, sprich getProperty("Path")
 
Zuletzt bearbeitet:

Quaxli

Top Contributor
Aber erst mal liest Du ja nur einen String ein oder? Was hindert Dich daran, den String entsprechend zu "befummeln"? Z. B. alle \ durch \\ zu ersetzen und erst dann den Konstruktor Deines Files aufzurufen?
 

Verjigorm

Top Contributor
Wenn du doch dateipfade aus der Properties-Datei einliest, hast du sie doch als Strings vorliegen und kannst Stringersetzungen vornehmen ..
 

Pantoi

Aktives Mitglied
bei dem String

.loginAdmin.txt

der ja nachher rauskommt, ist ja nicht mehr wirklich zu erkennen wo mal ein \
war, oder? Da wird es dann auch schwer 2 daraus zu machen...

Edit: Ich denke ich kann das Problem erst mal lösen indem ich anstatt getProperty
nen FileInputStream nehm und die Zeilen dann umbastel, mich würde aber
dennoch interessieren ob das mit getProperty irgendwie auch geht...
 
Zuletzt bearbeitet:

Verjigorm

Top Contributor
Achso, nun habe ich die Sache erst richtig verstanden.
Hm ich wüsste da so schnell keine Lösung, ausser du liest die Datei als normale Textdatei ein und parst selbst.
Oder du parst die Datei vorher und ersetzt in der Datei die / durch \
 

Pantoi

Aktives Mitglied
Siehe Edit :) - ich denke das ist auf die schnelle mal das einfachste, anders wäre
es natürlich irgendwie angenehmer aus meinen Augen :)
 

Verjigorm

Top Contributor
Die \ werden wohl als Steuerzeichen oder sowas gesehen und irgendwie unter den Tisch fallen gelassen.
Sehr merkwürdig
 

faetzminator

Gesperrter Benutzer
wie wärs mit / statt \?
1. verwendet nur Windoof \
2. erkennt Windoof auch / statt \ (ausser evtl. bei \\host nicht)
 

Landei

Top Contributor
Müsste sich abfangen lassen. Man kann doch beim Laden der Properties einen beliebigen InputStream angeben, und den muss man so hinbekommen, dass er die Backslashs richtig einliest.
Falls der Fehler wirklich in Properties liegt (also dort Backslashs in Strings einfach als Steuerzeichen angesehen werden), könnte man mit einem dazwischengeschalteten FilterInputStream aus jedem \ ein \\ machen, was die Sache beheben sollte.
 

Pantoi

Aktives Mitglied
wie gesagt: ich kann die Dateipfade leider net änder, da die so vorgegeben sind...
es greifen noch andere Programme auf die ini zu und ich geh jetzt einfach mal
davon aus, dass die mit den "\" arbeiten...
wenn ich mir die ini selbst schreiben würde wären das normal "/" und alles prima :)
 

Landei

Top Contributor
Lies doch einfach mal die ini-Datei mit einem FileInputStream ein und gib sie auf die Konsole aus. Hat die Ausgabe die Backslashs noch oder nicht?
 

Pantoi

Aktives Mitglied
Also damit werden die Backslashes noch ausgegeben:
Java:
File file = new File(fileName);
BufferedReader d = null;
FileInputStream fis = new FileInputStream(file);
d = new BufferedReader(new InputStreamReader(fis));
while (d.ready())
{
      System.out.println(d.readLine());
}
 
Zuletzt bearbeitet:

Landei

Top Contributor
Falls die Ausgabe die Backslashs zeigt, aber die Properties beim Laden mit demselben FileinputStream die Backslashs unterschlägt, muss ein FilterInputStream dazwischen, der die Backslashs verdoppelt.

Ungetestet:
Java:
properties.load(new MyFilterInputStream(derOriginaleFileInputStream));

class MyFilterInputStream extends FilterInputStream {
   final static int asciiCodeOfBackslash = 42; //zu faul zum Nachgucken...
   boolean lastWasBackslash = false;
   public MyFilterInputStream(InputStream is) { super(is); }
   @Override public int read() {
     if (lastWasBackslash) {
        lastWasBackslash = false;
        return asciiCodeOfBackslash;
     } else {
        int result = in.read();
        lastWasBackslash = result ==  asciiCodeOfBackslash;
        return result; 
     }
   }
}
 
Zuletzt bearbeitet:

Pantoi

Aktives Mitglied
42, n1 ;)
ich denke aber ich hab verstanden was du meinst und werd versuchen, das gleich mal
umzusetzen, danke!
 

Pantoi

Aktives Mitglied
hmmm read(); scheint beim lesen der properties nicht verwendet zu werden, d.h. wenn ich den FilterInputStream
lade, ändern sich die zeichen trotzdem nicht...
 

bastiann

Mitglied
Also das "Problem" oder wie man es nennen mag liegt hier:
Properties (Java 2 Platform SE v1.4.2)

Im Bereich "Load" steht der entsprechende Eintrag. "\" werden gedroppt (silent).
Um das zu verhindern würde ich die Zeile (Pfade) einlesen und mit einem regulären Ausdruck die "\" durch sogenannten File.separator ersetzen. Diese entsprechen dann je nach Betriebssystem dem entsprechenden
Trennungszeichen. Daraus kannst Du Dir dann schöne Strings mit Pfaden bauen. :)

Gruß
Bastian
 

Landei

Top Contributor
Hmm, vielleicht geht's ja so:
Java:
class MyFilterInputStream extends FilterInputStream {
   final static int asciiCodeOfBackslash = 42; //zu faul zum Nachgucken...
   final static int asciiCodeOfSlash = 43; //zu faul zum Nachgucken...
   public MyFilterInputStream(InputStream is) { super(is); }
   @Override public int read() {
        int result = in.read();
        return result = asciiCodeOfBackSlash ? asciiCodeOfSlash : result; 
   }
}
 

Pantoi

Aktives Mitglied
Hab mir jetzt nen eigenes .load geschrieben, das in der Section in der die Dateipfade stehen die \ nicht dropt... das funktioniert so weit und ich bin happy ^^
Danke für die Hilfe ;)
 

bastiann

Mitglied
Jetzt musst Du nur vorsichtig sein, wenn Du Zeichen "escapen" musst.
Ich würde Dir die umständliche Variante empfehlen und über den regulären Ausdruck gehen damit Du Pfade eindeutig erkennen kannst....Nur so ein Gedanke...
 

Pantoi

Aktives Mitglied
das sollte in absehbarer Zeit nicht vorkommen :)
aber wenn ich mal Nerv hab, kann ichs ja noch ändern
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Scanner nextLine() bringt Dateipfad Java Basics - Anfänger-Themen 1
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
P Speziellen Dateipfad bekommen Java Basics - Anfänger-Themen 6
N relativer Dateipfad funktioniert nicht Java Basics - Anfänger-Themen 6
G Wie gebe ich einen Dateipfad in RandomAccessFile an? Java Basics - Anfänger-Themen 2
MaxG. Input/Output Dateipfad angeben Java Basics - Anfänger-Themen 2
A Datei nicht gefunden, obwohl sie im Dateipfad ist. Java Basics - Anfänger-Themen 5
S Datei einlesen - Dateipfad unter Linux anpassen Java Basics - Anfänger-Themen 12
Y Datei mit relativem Dateipfad per FileReader aus .JAR heraus auslesen Java Basics - Anfänger-Themen 4
V Dateipfad als Parameter übergeben Java Basics - Anfänger-Themen 3
B Linux, Dateipfad, Einbindung externer Dateien.. Java Basics - Anfänger-Themen 7
M Dateipfad: einen Ordner "hoch" Java Basics - Anfänger-Themen 11
Luk10 Dateipfad beim Laden einer Datei + Neue kleine Frage! Java Basics - Anfänger-Themen 11
J fileReader: wird dateipfad benötigt? Java Basics - Anfänger-Themen 8
K relativer dateipfad Java Basics - Anfänger-Themen 4
J Ausgelesenen Dateipfad verändern Java Basics - Anfänger-Themen 5
K Dateipfad ermitteln Java Basics - Anfänger-Themen 4
Z regexp/pattern für dateipfad Java Basics - Anfänger-Themen 5
T RandomAccessFile und der Dateipfad Java Basics - Anfänger-Themen 2
G relativer Dateipfad? Java Basics - Anfänger-Themen 1
G Dateipfad öffnen und PW eingeben Java Basics - Anfänger-Themen 5
M Dateipfad als Kommandozeilenparameter Java Basics - Anfänger-Themen 2
G Dateipfad auslesen. Java Basics - Anfänger-Themen 2
J Dateipfad mit Leerzeichen Java Basics - Anfänger-Themen 10
K Das Backslash Problem Java Basics - Anfänger-Themen 5
D Slash durch zwei Backslash ersetzen Java Basics - Anfänger-Themen 11
L Problem, Backslash einzugeben - Version? Java Basics - Anfänger-Themen 11
L String.indexOf -> Backslash Java Basics - Anfänger-Themen 3
M Backslash aus mehreren einen machen? Java Basics - Anfänger-Themen 7
A Doppelter Backslash durch einen einfachen Backslash ersetzen Java Basics - Anfänger-Themen 6
S Backslash ersetzen. Java Basics - Anfänger-Themen 5
Guybrush Threepwood Backslash escapen Java Basics - Anfänger-Themen 5
E String abscheiden nach letztem Backslash Java Basics - Anfänger-Themen 3
K Das Böse Backslash Java Basics - Anfänger-Themen 8
F regex bei replaceAll und backslash ersetzen geht nicht. Java Basics - Anfänger-Themen 1
B Backslash Java Basics - Anfänger-Themen 3
T Doppel Backslash Java Basics - Anfänger-Themen 8
P replaceAll Problem mit Backslash Java Basics - Anfänger-Themen 1
A Reguläre Ausdrücke: Problem mit Backslash Java Basics - Anfänger-Themen 3
L Backslash als Pattern bzw. RegEx Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben