Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe das Problem, dass ich Firmen habe, deren Namen ein oder mehrere &-Zeichen enthält.
Diese Dateien lassen sich weder über Desktop noch über Runtime öffnen.
Kann man die irgendwie extra maskieren oder wie geht man da vor?
Edit: hab schon mit canonialPath und absolutePath rumgespielt, aber will nicht
Macht man im Dateinamen im beispiel unten das & weg, so geht es, ist das & drin, geht es nicht und es kommt die Meldung:
Der Befehl "C:\datei" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "im" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
edit: das Beispiel würde jetzt mit Desktop.getDestop.open(..) funktionieren, aber die Dateipfade, die ich benutze sind auch nicht per Desktop.getDesktop().open(...) ausführbar
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
public class Testfile {
/**
* @param args
*/
public static void main(String[] args)
{
try {
File file = new File("C:\\datei mit & im namen.txt");
String[] cmds = {"cmd", "/c", file.getPath()};
if(!file.exists())
{
System.out.println(file.createNewFile());
}
Process proc = Runtime.getRuntime().exec(cmds);
InputStreamReader isr = new InputStreamReader(proc.getErrorStream());
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null)
{
System.out.println(line);
}
br.close();
isr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class JavaSimple {
public static void main(String[] args) throws Exception {
File f = new File("D:\\test & da.txt");
PrintWriter writer = new PrintWriter(f);
writer.println("test");
writer.close();
BufferedReader reader = new BufferedReader(new FileReader(f));
System.out.println(reader.readLine());
reader.close();
}
}
ich denke das liegt an dem [c]String[] cmds = {"cmd", "/c", file.getPath()};[/c] er interpretiert [c]D:\\test & da.txt[/c] nicht als eine Datei sondern als 3 Parameter D:\\test, &, da.txt
d.h. du muss irgendwie "D:\\test & da.txt" uebergeben....
@bygones ich will die datei AUSFÜHREN und nicht drin schreiben/lesen
Also nochmal ein genaues Beispiel:
Java:
import java.awt.Desktop;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
public class Testfile {
/**
* @param args
*/
public static void main(String[] args)
{
try {
File file = new File("\\\\demnz-fs-01\\edv\\24500_QCM\\datei mit & im namen.txt");
String[] cmds = {"cmd", "/c", file.getPath()};
if(!file.exists())
{
System.out.println(file.createNewFile());
}
Process proc = Runtime.getRuntime().exec(cmds);
InputStreamReader isr = new InputStreamReader(proc.getErrorStream());
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null)
{
System.out.println(line);
}
br.close();
isr.close();
Desktop.getDesktop().open(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Ausgabe:
Der Befehl "\\demnz-fs-01\edv\24500_QCM\datei" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "im" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
java.io.IOException: Failed to open file:////demnz-fs-01/edv/24500_QCM/datei%20mit%20&%20im%20namen.txt. Error message: Das System kann den angegebenen Pfad nicht finden.
at sun.awt.windows.WDesktopPeer.ShellExecute(WDesktopPeer.java:59)
at sun.awt.windows.WDesktopPeer.open(WDesktopPeer.java:36)
at java.awt.Desktop.open(Desktop.java:254)
at testfile.Testfile.main(Testfile.java:38)
Das Problem liegt also nicht am "&" Zeichen, sondern an den Leerzeichen im Dateinamen. Die Windows Command Shell kann einen Dateinamen mit Leerzeichen nur auflösen, wenn Du ihn zwischen Anführungszeichen schreibst.
Soweit war ich vor Stunden schon
Die Leerzeichen sind NICHT das Problem.
Ich öffne alle Dateien mit Leerzeichen im Namen ohne Probleme.
Erst wenn dieses mistige &-Zeichen hinzukommt klappt nixmehr