„Здравей, Амиго, още веднъж.“
„Здравей и на теб, Риши. За Howво ще бъде днешният урок?“
„Днес ще ви разкажа за „Четец и писател“.
— Но, Риши, вече знам почти всичко за тях!
"Повторението е майката на ученето."
"Хм. Е, добре."
" Reader и Writer са аналози на InputStream и OutputStream , но работят със знаци, а не с byteове. Понякога се наричат също потоци от символи, за разлика от InputStream и OutputStream , които се наричат потоци от byteове."
„Едното е за символи, другото е за byteове. Спомням си.“
"Не е само това. Тези класове са специално проектирани да работят с текст и низове. Днес ще разгледаме две класически реализации на тези абстрактни класове: FileReader и FileWriter ."
„Ето методите на класа FileReader :“
Метод | Описание |
---|---|
int read() |
Чете един символ от потока и го връща. |
int read(char cbuf[], int offset, int length) |
Чете масив от знаци, връща броя прочетени знаци. |
boolean ready() |
Връща true, ако е възможно да се чете от потока. |
void close() |
Затваря входния поток. |
int read(java.nio.CharBuffer target) |
Прочетете набор от знаци в буфер. |
int read(char cbuf[]) |
Чете масив от знаци. |
long skip(long n) |
Пропуска n знака в потока. |
String getEncoding() |
Връща текущото codeиране на потока. |
„Е, знам почти всичко това. Но Howво да кажем за FileWriter?“
Метод | Описание |
---|---|
void write(int c) |
Записва един знак в потока. |
void write(char cbuf[], int off, int len) |
Записва масив от знаци в потока. |
void write(char cbuf[]) |
Записва масив от знаци в потока. |
void write(String str, int off, int len) |
Записва част от низ в потока. |
void write(String str) |
Записва низ в потока. |
void flush() |
Записва всичко кеширано в паметта на диск. |
void close() |
Затваря потока. |
String getEncoding() |
Връща текущото codeиране на потока. |
"Знам това!"
"Това е чудесно. Тогава нека да разгледаме един интересен пример и по-късно Диего ще ви даде още задачи."
"Как четете файл ред по ред? Можете ли да напишете codeа?"
"Спокойно, вижте:"
// Create a list for storing the lines
List<String> list = new ArrayList<String>();
// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
// As long as the file isn't empty, read from it
while (reader.ready())
{
list.add(reader.readLine());
}
// Close the file
reader.close();
"Хм. Не е лошо."
„Не е зле? Всичко е просто и красиво. Признай си, Риши – вече владея отлично I/O нишки. И така, Howво може да се подобри тук?“
"Ами, например, можете да направите това:"
File file = new File("c:/document.txt");
List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());
"Хм. Това е по-кратко. И точно днес ми каза за всички тези методи. Ще го преработя. Благодаря ти за урока, Риши."
— Успех, Амиго.
GO TO FULL VERSION