windows - Java File kan ikke åbne bestemte filer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at åbne filer fra Java med noget som dette:


java.awt.Desktop.getDesktop().open(new File("c:\coolfile.txt");


Selvfølgelig fungerer det hele fint og dandy i de fleste tilfælde.


IMIDLERTID!


Når jeg har en fil med unicode-tegnet u3000, kan jeg ikke åbne det! Selvom filen findes.


For eksempel:


java.awt.Desktop.getDesktop().open(new File("c:\coolfileu3000withweirdname.txt");


Jeg får en undtagelse, selv når filen eksisterer


[java] java.io.IOException: Failed to open file:/E:/\_prog/test\%E3\%80\%80.txt. Error message: The system cannot find the path specified.


Vær venlig at hjælpe mig, jeg forsøgte stort set alt. Dette kører mig sindssyg:/


Redigere:


For at give nogle flere oplysninger:


Jeg kan nemt oprette fil med dette navn fra Java.


Det ser ud til, at det har noget at gøre med whitespace


Jeg ved ikke, om det gælder andre tegn, jeg fandt ikke nogen endnu. Men selvfølgelig, hvis der er 1, kunne det let være 100.


Jeg er ganske sikker på, at jeg ikke kan læse fra filen eller skrive til den fra Java, men jeg har ikke testet det, da det ikke er min største bekymring.

Bedste reference


java.awt.Desktop.getDesktop().open(new File("c:\coolfileu3000withweirdname.txt");


Det kompilerer ikke. Det er klart, at det ikke er din rigtige kode.



  [[java]] java.io.IOException: Kunne ikke åbne
  file:/E:/\_ prog/test\% E3\% 80\% 80.txt



Og der er bevis. Du har tydeligvis bestået en URL til ny FileInputStream(). Det tager ikke en URL-streng, det tager et filnavn.

Andre referencer 1


Ok, jeg tror, ​​jeg faktisk fandt en slags løsning på mit spørgsmål, og jeg sender det her for at hjælpe ethvert folk, der kan have lignende problemer.


Denne løsning fungerer kun for Windows (XP og jeg tror), men jeg ved ikke engang, om dette problem eksisterer i andre operativsystemer. Og selvom det gør en lignende løsning, bør det være muligt.


Jeg bruger følgende kode til succesfuldt at åbne en fil med tegnet:


Process p=Ny ProcessBuilder ('cmd', '/c start \' \ '\' E: \ \_ prog \ test \ u3000.txt \ ''). Start ();


Hvilket åbner filen 'E: \_prog \ testu3000.txt'

Andre referencer 2


Så vidt jeg ved \ u3000 er ideografisk plads karakter. For at teste din kode oprettede jeg en fil med navn CompanyAlt + 3000Address.


Bemærk: Når du trykker på Alt + 3000, opretter Windows et ideografisk rumtegn. Så kopierede jeg filnavnet til mit java-program, og det fungerede for mig.


Desktop.getDesktop().open(new File("C:\Users\Chandru\Desktop\Company╕Address.txt"));