Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Чтение из файла


Автор: val 16.2.2005, 18:54
Входной файл содержит только 1 символ - '4' с кодом 52.

Имею такой класс для того, чтобы прочитать этот символ:
Код

class A {
private int vertexNumber;
private boolean isInputFileOpened;
private FileReader fin;
private boolean inputFileOpen(String fileName){
 try {
  fin= new FileReader(fileName);
 } catch (IOException e) {
  System.out.println("Problems with file opening.");
  return false;
 }
 return true;
}
private int getNextInteger() {
 int temp;
 try {
   temp = fin.read();
   while ((temp == 10) || (temp == 13) || (temp == (int)' '))
    temp = fin.read();
   return temp;
  } catch (IOException e) {
   return -1;
  }
}
public A(String inputDataFileName) {
 isInputFileOpened = this.inputFileOpen(inputDataFileName);
 if (isInputFileOpened) {
  vertexNumber = this.getNextInteger();
  System.out.println(vertexNumber);
 }
}
}


В результате печается 52, код символа, а ходелось бы, чтобы восьмёрка выводилась... Что надо подправить...

Автор: Domestic Cat 16.2.2005, 18:59
Восьмерка или четверка? smile

Код

System.out.println( (char) vertexNumber );


Автор: val 16.2.2005, 19:01
Domestic Cat это понятно, надо как раз, чтобы без каста... Чтобы в переменной хранилось не 52, а именно четверка?

Автор: Domestic Cat 16.2.2005, 19:12
Если в файле будут храниться только цифры - просто вычитаем 48 - получится чтo нужно.
это если их надо как int хранить. Если хочешь хранить их как char конвертируй в char или пользуйся
readChar из
http://java.sun.com/j2se/1.4.2/docs/api/java/io/RandomAccessFile.html

Автор: val 16.2.2005, 19:19
Впредь работу с файлами буду строить на базе класса RandomAccessFile

Всем спасибо, в особенности
Domestic Catу...

Автор: Tamerlann 17.2.2005, 17:23
Сорри, если в примере это не сделано заведеомо, но:
мне кажется FileReader можно для эффкетивности обернуть в BufferedReader (для организации буферизованного вывода).
А для записи/чтения примитивных данных неплохо еще и DataOutputStream/DataInputStream использовать (можно записывать char, int, double и все другие примитивные типы).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)