Hier ist ein einfaches Codebeispiel (es kann direkt zum Ausführen aufgerufen werden):
Code: Select all
@Test
public void createDesktopIni() throws IOException {
String folderPath = Write a folder path here;
String iniPath = folderPath + "\\desktop.ini";
File file = new File(iniPath);
// delete and recreate if exist
if (file.exists()) {
file.delete();
}
file.createNewFile();
// Write content
String alternativeName = "Alternative Name";
//alternativeName = "这是一个中文别名";
OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_16LE);
oStreamWriter.write("[.ShellClassInfo]\nLocalizedResourceName = " + alternativeName);
oStreamWriter.flush();
oStreamWriter.close();
// Set system attribute
Files.setAttribute(Paths.get(folderPath), "dos:system", true, LinkOption.NOFOLLOW_LINKS);
Files.setAttribute(Paths.get(iniPath), "dos:system", true, LinkOption.NOFOLLOW_LINKS);
Files.setAttribute(Paths.get(iniPath), "dos:hidden", true, LinkOption.NOFOLLOW_LINKS);
}
Wenn ich jedoch einen chinesischen alternativen Namen wie Kommentar festlege:
Code: Select all
alternativeName = "这是一个中文别名";
Wenn ich sie durch öffne VSCode wird der folgende Inhalt angezeigt:

Aber wenn ich Trotzdem öffnen->Erneut öffnen mit wähle UTF-16 LE-Kodierung und dann die Datei als UTF-16 LE über VS Code speichern, funktioniert es wieder einwandfrei.
Hier sind einige andere Kodierungen, die ich ausprobiert habe:
- UTF-8 funktioniert, aber chinesische Schriftzeichen werden in Explorer.exe verstümmelt.
- GBK funktioniert und es wird nicht verstümmelt . Aber ich bevorzuge die Verwendung von UTF-16. Ich sehe, dass die desktop.ini im Ordner Eigene Dateien auch UTF-16 LE verwendet.
< li>UTF-16 funktioniert nicht und die Datei wird in UTF-16 BE codiert.