Problem mit Pfaden

Tristoni

Grünschnabel
Hi
ich habe 4 Strings, welche über Parameter übergeben werden. Nun habe ich das Problem das es Pfade sind und sie sie in etwa so aussehen:
C:\Temp\testprogramm.exe

ich brauche aber einen Pfad in welchem die backslashes mit \\ ausgetauscht wurden.
Am Ende sollte es in etwa so aussehen:

String s = "C:\Temp\testprogramm.exe";
--> umwandlung -->
s = C:\\Temp\\testprogramm.exe
Process p = Runtime.getRuntime().exec(s);

mit replaceAll will es irgendwie nicht funktionieren

lg timo
 
Code:
            String In = pfade.get(0);
            In = In.replaceAll("\\","\\\\");
            out = pfade.get(1);
            out = out.replaceAll("\\","\\\\");   
            String programm = pfade.get(2) + "\\phreeq.exe";
            programm = programm.replaceAll("\\","\\\\");  

            Process p = Runtime.getRuntime().exec(programm + In + out);
            
            BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream()));
            
            String s;
            int i =0;
            while((s = in.readLine()) != null) {
                System.out.println(s);
                System.out.println(i);
                i++;
            }
            p.destroy();

Nun wenn euch der Code weiterhilft kp
na ich habe ne ArrayList übergeben bekommen, diese besteht aus Strings.

Bei mir ist das Kompilierbar, jedoch fliegt es beim ersten replaceAll() aus meinem try-catch-Block
 
Nun das Problem ist das der Backslash in einigen Programmiersprachen vorbelegt ist, das bedeutet man kann keinen String schreiben, welcher so aussieht "\".
Und da ich diesen einfach einlese aus einer Textdatei aknn ich ihn nicht ändern.
 
Code:
try{
            String In = pfade.get(0);
            In = In.replaceAll("\\","\\\\");
            out = pfade.get(1);
            out = out.replaceAll("\\","\\\\");   
            String programm = pfade.get(2) + "\\phreeq.exe";
            programm = programm.replaceAll("\\","\\\\");  

            Process p = Runtime.getRuntime().exec(programm + In + out);
            
            BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream()));
            
            String s;
            int i =0;
            while((s = in.readLine()) != null) {
                System.out.println(s);
                System.out.println(i);
                i++;
            }
            p.destroy();
        }catch(Exception ex){ 
            System.out.println("Hallo es geht nicht");
        }

Sry hatte den try-catch vergessen
 
Nun das Problem ist das der Backslash in einigen Programmiersprachen vorbelegt ist, das bedeutet man kann keinen String schreiben, welcher so aussieht "\".
Und da ich diesen einfach einlese aus einer Textdatei aknn ich ihn nicht ändern.
Du hast da grundlegend etwas nicht verstanden. Du mußt in der Programmiersprache innerhalb eines Stringliterals den Backlash verdoppeln, damit der Compiler daraus letztendlich einen einzelnen Backslash macht.

Wenn du einen Text aus einer Datei liest das etwas völlig anderes. Da wird nichts umgewandelt ein Backslash bleibt ein Backslash.

Gruß
 

Neue Beiträge

Zurück