2008-09-15 5 views
5

Stellt Java eigene zusätzliche Beschränkungen auf? Windows (bis zu Vista) erlaubt keine Namen zu enthaltenUnterwirft Java andere Dateinamen als das zugrunde liegende Betriebssystem?

Ich weiß, wie Namen validiert werden (ein regulärer Ausdruck).

Ich muss die Dateinamen validieren, die von Benutzern eingegeben werden.

Meine Anwendung muss nicht auf einer anderen Plattform laufen, obwohl ich natürlich lieber plattformunabhängig wäre!

Antwort

2

Nein, Sie können jedes Zeichen umgehen, das Java in String-Literalen nicht erlaubt, aber das Dateisystem erlaubt.

Auch wenn in den Hafen eine Windows-Anwendung auf Mac oder Unix versuchen, ist es am besten zu nutzen:

File.separator 

die richtige Datei Separator Um zu bestimmen, auf jeder Plattform zu verwenden.

0

Wenn Sie eine neue Datei erstellen, werden die eingegebenen Argumente durch eine plattformspezifische Implementierung der java.io.FileSystem-Klasse normalisiert. Es gibt keine Java-spezifischen Einschränkungen, die ich kenne.

und ja, immer File.separator verwenden.

0

Java unterstützt jede Zeichenkette, die in Unicode ausgedrückt werden kann (vorbehaltlich einiger lächerlich langer maximaler Länge, Integer.MAX_VALUE), und Dateinamen sind nur eine andere Art von Zeichenketten.

Dies bedeutet natürlich, dass Sie versuchen können, auf eine Datei mit einem Namen zu verweisen, der vom zugrunde liegenden Betriebssystem nicht unterstützt wird. Wenn Sie dies tun, erhalten Sie eine Art von IOException, wenn Sie versuchen, die Dateiverweis ...

+0

Die String-Länge Max ist die von Integer.MAX_VALUE als die Länge wird in einem int gespeichert. – jjnguy