Próbuję stworzyć plik i zapisać do niego dane w lokalizacji 'path'
//jeśli foldery nie istnieją - tworzę je
1. File own = new File(path);
2. own.mkdirs();
3. File outputFile = new File(path, clickedKey+".txt");
4. OutputStream fos = new FileOutputStream(outputFile);
5. fos.write(data.getBytes());
6. fos.close();
Wszystko działa, pliki są tworzone (wraz z danymi) jeśli ścieżka nie zawiera polskich znaków.
Jeśli gdzieś się znajdą nasze "ogonki" wtedy program normalnie działa (zero błędów, wszystkie instrukcje od 3 do 6), ale nie tworzy pliku.
Co ciekawe jeśli ścieżka path NIE ZAWIERA polskich znaków, a nazwa pliku clickedKey ZAWIERA - to plik jest tworzony i kopiowane są dane. Wnioskuję, że problem leży wyłącznie w czytaniu "ogonków" ze scieżki folderów. Z tworzeniem i zapisaniem polskich znaków zarówno w nazwach plików jak i folderów problemów nie ma.
Próbowałem wymusić kodowanie, poprzez kod w stylu:
Charset charset = Charset.forName("UTF-8");
CharsetEncoder encoder = charset.newEncoder();
CharsetDecoder decoder = charset.newDecoder();
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(clickedKey+".txt"));
CharBuffer cbuf = decoder.decode(bbuf);
String s = cbuf.toString();
bbuf = encoder.encode(CharBuffer.wrap(path));
cbuf = decoder.decode(bbuf);
String path_s = cbuf.toString();
File outputFile = new File(path_s, s);
OutputStream fos = new FileOutputStream(outputFile);
fos.write(tab.getBytes());
fos.close();
zarówno przed tworzeniem scieżki folderów(instrukcja 1.), jak i jej odtwarzaniem (instrukcja 3.) w celu zapisu nowego pliku.
efekt ten sam.
ps. wszystko odbywa się na karcie SD.