//Schreiben:
try (PrintWriter pw = new PrintWriter("printWriterFile.dat", "UTF-8")) {
pw.print(dataObj.dataID);
pw.print(" ");
pw.print(dataObj.temperature);
pw.print(" ");
pw.println(dataObj.name);
} catch (Exception ex) {
ex.printStackTrace();
}
//Lesen:
try (FileInputStream fis = new FileInputStream("printWriterFile.dat");
BufferedInputStream bis = new BufferedInputStream(fis);
Scanner inScanner = new Scanner(bis)) {
inScanner.useLocale(Locale.US);
int dataId = inScanner.nextInt();
double temp = inScanner.nextDouble();
String name = inScanner.next();
DataHolder dataObj = new DataHolder(dataId, temp, name);
} catch (Exception ex) {
ex.printStackTrace();
}
Na ja eben gerade nicht. Und "Java verwendet doch..." ist eine sehr grobe Aussage. Java an sich macht gar nichts. Bei Float.parseFloat() z.B. hast du Recht. Und bei System.out.println(3.23f) hast du auch Recht. Diese Operationen sind nicht locale-sensitiv.Aber brauche ich das überhaupt? Ich meine Java verwendet doch immer den Punkt als Dezimalstellentrennung.
public static void main(String arg[]) {
Scanner scanner = new Scanner("2.32");
scanner.useLocale(Locale.GERMANY);
System.out.println(scanner.nextFloat());
}
scanner.useLocale(Locale.GERMANY);
System.out.println(scanner.nextFloat());
inScanner.useLocale(Locale.US);
System.out.println(scanner.nextFloat());
//bzw. würde es doch auch gehen mit:
inScanner.useLocale();