Я читаю обо всех входных/выходных потоках в java на Java Tutorials Docs. Учебники писатель использовать этот пример:Как FileInputStream и FileOutputStream работают на Java?
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyBytes {
public static void main(String[] args) throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("xanadu.txt");
out = new FileOutputStream("outagain.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
xanadu.txt данных файла:
In Xanadu did Kubla Khan
A stately pleasure-dome decree:
Where Alph, the sacred river, ran
Through caverns measureless to man
Down to a sunless sea.
Выход в outagain.txt файл:
In Xanadu did Kubla Khan
A stately pleasure-dome decree:
Where Alph, the sacred river, ran
Through caverns measureless to man
Down to a sunless sea.
Почему авторы используют
int c
даже если мы читаем персонажей?Зачем использовать
-1
в состоянии?Как
out.write(c);
метод конвертироватьint
снова символы?
Это не символы, они байты. Вы знакомы с [документацией по API Java] (http://docs.oracle.com/javase/8/docs/api/index.html?overview-summary.html)? Существует объяснение для каждого класса и каждого метода в стандартных библиотеках Java, в том числе для файлов FileInputStream и FileOutputStream. Важно учиться у них, когда вы не знаете, почему метод вызывается так, как он есть. – RealSkeptic
@RealSkeptic Java Tutorials Документы выглядят легко и удобно, но java api docs выглядит как беспорядок. Вот почему я читаю учебники docs. Любой, как я буду пытаться читать оттуда. –
Они не являются источником для обучения программированию. Это подробное объяснение каждого класса. Поэтому каждый раз, когда вы видите класс, используемый в учебнике, вы должны искать его в документах API. Здесь важна важная информация. – RealSkeptic