Unicode-Zeichen im Dateinamen

Abapking

Mitglied
Hallo,

ich habe folgendes Probelm:

Ich möchte eine Datei öffnen, die Unicode-Zeichen im Namen enthält. Alle Zeichen befinden sich im UTF-8 Zeichensatz. Wie kann ich in Java intern den Dateinamen so umwandeln, das man die Datei öffnen und auslesen kann. Der Inhalt der Datei selbst, ist im ASCII - Format, also kein Problem. Wenn ich die Datei mit einem per Hand abgeänderten Dateinamen (z. B. "/uxxxxtest.txt") öffne funktioniert alles einwandtfrei. Kann mir da jemand weiterhelfen?

Ich danke für jede hilfe ... die hoffentlich kommt
 
Hallo!

Also Java hat eigentlich kein Problem mit Unicode. Wenn das zugrundeliegende Betriebsystem Dateinamen in Unicode unterstützt solltest du diese auch auf dieser Plattform von Java aus öffnen können.

gruß Tom
 
Hallo Tom,
bei meinem BS Handelt es sich um WIN XP PRO. Ich habe dort in meinem Ordner "temp" eine Datei "?tester.txt" wobei der erste Buchstabe das Unicode-Zeichen 0157 ist. In dem unten gezeigten Beispiel funktioniert der Aufruf. Das Programm ließt mir von einer Textdatei die ersten 10 Zeichen ein und gibt sie in der Console aus. Problem ist nur, dass in meinem Programm der Benutzer den Dateinamen eingeben muss und dass wird er sicherlich nicht im Unicoder machen... Leider

Starte ich das Programm mit dem "?", kommt eine FileNotFound-Exception.

Gibt es da vielleicht ein Include, das Unicodezeichen-Unterstützung beinhaltet?

Viele Grüße
Der Hoffnungsträger

Code:
import java.io.IOException;
import java.io.RandomAccessFile;

public class MyInput {
	public static void main( String[] args ) throws IOException {

		String strGetFile;
		
		strGetFile = GetFile ("C:\\temp\\\u0157tester.txt");
		
		System.out.println(strGetFile);
	}

	
	public static String GetFile (String strFilePath) throws IOException {
		byte bytFile [] = new byte[10];
		String strFileData = "";
		
		RandomAccessFile myFile = new RandomAccessFile(strFilePath,"rw");
		
		myFile.read(bytFile);
		
		for (int i = 0; i < bytFile.length; i++)
			strFileData += (char)bytFile[i];
		
		return strFileData;
	}
}
 
Hi!

Könnte es vielleicht dan dem "/" zuviel liegen an dieser stelle?

Code:
...

strGetFile = GetFile ("C:\\temp\\\u0157tester.txt");

...

Gruß
TOM
 
Hallo Tom,

die ersten beiden \\ bedeuten in Java bei einer Adresspfadangabe einen einfachen \. Der dritte \ gehört zum Unicode (Escape-Sequenz).

Leider nicht Rätsels Lösung...
 
Das ist schon klar. Ich bin davon ausgegangen, dass dein File nicht \blabla.txt heißt ... warum hast du derartige Filenamen?

TOM
 
Vorallem wie hast du diese Datei überhaupt unter Win erstellt

Gruß
TOM

PS: Vergiss es :-) hab mich im Topic kurz vergriffen, vesteh jetzt was du meinst :offtopic:
 
\u0157 ist doch ein Fragezeichen, ich dachte man dürfte unter win garkeine Namen mit ? benutzen? Sorry wenn das hier Offtopic ist, aber ich kann bei mir garkeine Dateien mit einem Fragezeichen erstellen..
mfg
elmato
 
\u0157 ist normalerweise ein ? (man beachte den Haken unter dem r) und wird dann als ? Dargestellt, wenn z. B. Eclipse nur ein Teil des Unicode bekannt ist.
 
Zurück