MessageFormat: ParseException

Coopar

Grünschnabel
Hallo,

ich benutze ein MessageFormat zur Erstellung eines Dateinamens.
Anschließend möchte ich den Dateinamen wieder mittels des MessageFormats parsen.

Code:
private static final MessageFormat FILENAME_FORMAT = new MessageFormat("event_{0}_{1,time,yyyyMMddHHmmssSSS}.{2,number,000}.txt");

Erstellung des Dateinamen:
Code:
public synchronized String getFileName() {
		Date tstamp = new Date();
		if (tstamp.equals(lastUsedIdTimestamp)) {
			idCount++;
		} else {
			lastUsedIdTimestamp = tstamp;
			idCount = 0;
		}
		return FILENAME_FORMAT.format(new Object[]{getCloneId(), lastUsedIdTimestamp, new Integer(idCount)});
	}

Parsen des Dateinamen:
Code:
File file = files[i];
				String fileName = file.getName();
				try {
					Object[] patternObjects = FILENAME_FORMAT.parse(fileName);

Bei mir lokal funktioniert das mit folgendem String wunderbar:
Code:
"event_NA_20111110142214529_000.txt"

Bei einem Freund scheitert das Parsen mit einer Parse-Exception:
Code:
java.text.ParseException: MessageFormat parse error!
	at java.text.MessageFormat.parse(MessageFormat.java:1021)
	at com.test.project.event.Test.parseFiles(Test.java:109)

Wenn wir bei dem Freund das ".txt" am Ende wegnehmen, funktioniert wieder alles.

Wir haben das beide mit Java 1.5 und Java 1.6 laufen lassen.
Bei mir läuft es unter beiden Versionen, bei meinem Freund unter keiner der Versionen.

Hat jeman eine Idee, was wir falsch machen?
 
Hi,
eine Vermutung von mir wäre, dass bei deinem Freund den "event_{0}_{1,time,yyyyMMddHHmmssSSS}.{2,number,000}.txt" als Dateinamen sieht und die Extension (.txt) "versteckt" hält. Aber wie gesagt, das ist nur eine Vermutung.

Gruß

Fabio
 
Wir haben bereits nur das Parsen mit einem String versucht, ohne einen Datei zu erzeugen oder einen Dateinamen zu parsen.
Auch dann verhält es sich leider so unterschiedlich.
 
Hi.
Code:
private static final MessageFormat FILENAME_FORMAT = new MessageFormat("event_{0}_{1,time,yyyyMMddHHmmssSSS}.{2,number,000}.txt");

...

Bei mir lokal funktioniert das mit folgendem String wunderbar:
Code:
"event_NA_20111110142214529_000.txt"
Das kann eigentlich nicht sein.

Du hast da zwischen der Zeit und dem number Teil ein '_' statt eines '.' wie vom Format vorgeschrieben.

Ansonsten, mach doch einfach mal ein vollständiges Minimalprogramm.

Gruß
 
Zurück