Скорее всего, ваша проблема возникает из-за того, что namePieces
не инициализирован. Как уже упоминалось в комментариях, вы не должны использовать char[]
в качестве контейнера для ваших символов (потому что в реальном мире вы не будете каждый раз знать длину содержимого файлов, поэтому вам, вероятно, потребуется изменить размер своего контейнера ), лучше использовать StringBuilder
, предоставляемый стандартной библиотекой Java. Это защитит вас от выхода за пределы.
StringBuilder namePieces = new StringBuilder();
File file = new File(filePath);
BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(file),
Charset.forName("UTF-8")));
int c;
while((c = reader.read()) != -1) {
namePieces.append((char) c);
}
String nameString = namePieces.toString(); // Use this string as a complete array of needed characters
Как вы видите, я изменил подход, используя не только StringBuilder
, но и BufferedReader
. Тем не менее, для вашей задачи вы можете оставить FileReader
как есть. Просто подумайте о добавлении символов в конструктор.