Java Line IO против C ++ IO? - PullRequest
       1

Java Line IO против C ++ IO?

1 голос
/ 10 февраля 2011

Обратите внимание, что это не обсуждение "лучше, чем".

Я программист на C ++, и это заставляет меня чувствовать себя невероятно глупым, не зная, как сделать очень много операций ввода-вывода Java-файла.*

Мне нужно хранить несколько различных типов данных в файле для последующего чтения.К ним относятся целые числа и строки переменной длины.

В C ++ я мог бы просто использовать:

//wont actually know the value of this
string mystr("randomvalue");
//the answer to the Ultimate Question of Life, the Universe, and Everything
int some_integer = 42;

//output stream
ofstream myout("foo.txt");
//write the values
myout << mystr << endl;
myout << some_integer << endl;

//read back
string read_string;
int    read_integer;

//input stream
ifstream myin("foo.txt");
//read back values
//how to do accomplish something like this in Java?
myin >> read_string;
myin >> read_integer;

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 10 февраля 2011

В Java вы используете InputStream или OutputStream для необработанного двоичного ввода-вывода.Вы создаете другие типы ввода / вывода поверх них, чтобы добавить функциональность.Например, вы можете использовать BufferedInputStream , чтобы произвольный входной поток стал буферизованным.При чтении или записи двоичных данных часто удобно создавать DataInputStream или DataOutputStream поверх необработанных входных и выходных потоков, так что вы можете сериализовать любой примитивный тип без предварительногопреобразовать их в их представления байтов.При сериализации объектов в дополнение к примитивам используются ObjectInputStream и ObjectOutputStream .Для ввода / вывода текста InputStreamReader преобразует поток необработанных байтов в строковый ввод на основе строки (вы также можете использовать BufferedReader и FileReader), тогда как PrintStream аналогичным образом делает запись форматированного текста в необработанныйпоток байтов легкий.В Java гораздо больше возможностей ввода / вывода, но они должны помочь вам начать работу.

Пример:

void writeExample() throws IOException {
   File f = new File("foo.txt");
   PrintStream out = new PrintStream(
                         new BufferedOutputStream(
                             new FileOutputStream(f)));
   out.println("randomvalue");
   out.println(42);
   out.close();
}

void readExample() throws IOException {
   File f = new File("foo.txt");
   BufferedReader reader = new BufferedReader(new FileReader(f));
   String firstline = reader.readLine();
   String secondline = reader.readLine();
   int answer;
   try {
     answer = Integer.parseInt(secondline);
   } catch(NumberFormatException not_really_an_int) {
     // ...
   }
   // ...

}
3 голосов
/ 10 февраля 2011

Вы должны понимать basic Java File IO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...