Я тестировал ваш код на J2SE и Android и работал нормально. Я добавил несколько строк для сравнения результатов для J2SE:
System.out.println("ITERATIONS: " + iterations);
System.out.println("LEN: " + stranica.length());
System.out.println("LAST 50 chars: "
+ stranica.substring(stranica.length() - 50, stranica
.length()));
FileWriter fw = new FileWriter("/tmp/tmp-j2se.txt");
fw.write(stranica);
fw.close();
и Android:
System.out.println("ITERATIONS: " + iterations);
System.out.println("LEN: " + stranica.length());
System.out.println("LAST 50 chars: "
+ stranica.substring(stranica.length() - 50, stranica
.length()));
FileOutputStream fos = openFileOutput("tmp-and.txt",
Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);
System.out.println(getFileStreamPath("tmp-and.txt")
.getAbsolutePath());
fos.write(stranica.getBytes());
fos.close();
Я сравнил оба файла и они были идентичны, но меня удивило то, что длина, возвращаемая String на обеих платформах, не совпадает:
J2SE:
LEN: 22479
Android:
05-22 20: 28: 22,733: INFO / System.out (455): LEN: 22433
Однако размер файла, полученного на платформе Android, также имел длину 22479 байт. Единственное объяснение, которое я могу найти без дальнейшего изучения, заключается в том, что некоторые кодовые (возможно, строки / окончания) переводы выполняются прозрачно.
Возвращаясь к вопросу, ваш код кажется (и доказал) правильным. На какой версии Android Platform / Hardware вы тестируете свой код?