Sie konstruieren OutputStreamWriter
mit einem Argument. Das bedeutet, dass es den Java-String, der von printData
kommt (der Unicode ist), in einen Byte-Strom (Dateiausgabe) unter Verwendung der Standardcodierung des Betriebssystems umwandeln wird, und Sie unterschiedliche Ergebnisse auf verschiedenen Maschinen erhalten können, abhängig von ihren Lokalisierungseinstellungen.
Zum Beispiel, stellen Sie sich vor, dass Ihr Objekt printData
japanischen Text enthält. Wenn Leute Ihre Software auf Windows in Japan und den USA ausführen, erhalten sie unterschiedliche Daten, die in die Datei geschrieben werden. US-Benutzer haben wahrscheinlich Fragezeichen (?) anstelle aller Hieroglyphen, während japanische Benutzer möglicherweise UTF-8-Dateien mit originalen japanischen Zeichen haben. Wenn der ursprüngliche Text mehrere Sprachen enthält, werden die Ergebnisse noch unvorhersehbarer sein.
Das kann für Ihre Anwendung akzeptabel sein oder auch nicht, abhängig davon, was sie tut und woher die Daten kommen. Darum geht es bei der Warnung.
Wenn Sie die Dateicodierung kennen, die Ihre Anwendung erstellen soll, sollten Sie sie möglicherweise explizit auswählen, wenn Sie OutputStreamWriter
konstruieren. Andererseits, wenn Sie möchten, dass sie in die Standarddarstellung der Maschine übersetzt wird, lassen Sie sie so wie sie ist.