https://github.com/jcoderpaul/javaextended-26-29
IO API – (Input & Output). Reader. Writer. Serialization. InputOutputStream. Section cheat sheet. For memory!
https://github.com/jcoderpaul/javaextended-26-29
Last synced: 6 days ago
JSON representation
IO API – (Input & Output). Reader. Writer. Serialization. InputOutputStream. Section cheat sheet. For memory!
- Host: GitHub
- URL: https://github.com/jcoderpaul/javaextended-26-29
- Owner: JcoderPaul
- Created: 2022-11-02T16:00:23.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-11-21T18:05:46.000Z (over 3 years ago)
- Last Synced: 2025-02-25T23:32:53.458Z (over 1 year ago)
- Language: Java
- Size: 99.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: ReadMe.md
Awesome Lists containing this project
README
### ******* IO (Input & Output) API *******
IO API – (Input & Output) в первую очередь это Java API, которые облегчают работу с потоками.
Очень часто приходится получать какой-то поток данных, а потом как-то их обрабатывать и
отправлять дальше. Например, пользователь ввел логин и пароль, программа в свою очередь должна
получить эти данные, обработать и сохранить в файл. Для этих целей можно использовать IO.
В Java библиотека IO API находится в пакете java.io и для того чтобы начать использовать
IO достаточно импортировать данную библиотеку.
Input and Output – Назначение:
В java.io существуют так называемые потоки ввода и вывода (InputStream and OutputStream).
В основном java.io предназначен для чтения/записи данных из/в ресурс:
1) файл;
2) при работе с сетевым подключением;
3) System.err, System.in, System.out;
4) при работе с буфером.
В Java IO много классов которые в основном работают с потоками чтения и записи, и решают
различные задачи:
- получения доступа к файлам;
- получение сетевого соединения;
- работа с буфером;
- доступ к внутринему буферу памяти;
- межпоточнное общение;
- парсинг данных;
- чтение и запись текста;
- чтение и запись примитивных данных (long, int, float …);
- чтение и запись объектов.
Классы Java IO API:
- Базовые:
- InputStream / OutputStream
- [Reader](https://github.com/JcoderPaul/JavaExtended-26-29/tree/master/Less_26_ch_2_FileReader/src/Less_26_ch_2_FileReader) / [Writer](https://github.com/JcoderPaul/JavaExtended-26-29/tree/master/Less_26_ch_1_FileWriter/src/Less_26_ch_1_FileWriter)
- InputStreamReader / OutputStreamWriter
- Массивы:
- ByteArrayInputStream / ByteArrayOutputStream
- CharArrayReader / CharArrayWriter
- Files:
- [FileInputStream / FileOutputStream](https://github.com/JcoderPaul/JavaExtended-26-29/tree/master/Less_26_ch_6_FileInputOutputStream/src/Less_26_ch_6_FileInputOutputStream)
- [RandomAccessFile ](https://github.com/JcoderPaul/JavaExtended-26-29/tree/master/Less_28_IO_RandomAccessFile/src/Less_28_IO_RandomAccessFile)
- [FileReader](https://github.com/JcoderPaul/JavaExtended-26-29/tree/master/Less_26_ch_2_FileReader/src/Less_26_ch_2_FileReader) / [FileWriter](https://github.com/JcoderPaul/JavaExtended-26-29/tree/master/Less_26_ch_1_FileWriter/src/Less_26_ch_1_FileWriter)
- Буферизация:
- BufferedInputStream / BufferedOutputStream
- [BufferedReader](https://github.com/JcoderPaul/JavaExtended-26-29/tree/master/Less_26_ch_5_BufferedReader/src/Less_26_ch_5_BufferedReader) / [BufferedWriter](https://github.com/JcoderPaul/JavaExtended-26-29/tree/master/Less_26_ch_4_BufferedWriter/src/Less_26_ch_4_BufferedWriter)
Но у Java IO есть свои недостатки:
- Блокирующий доступ для ввода/вывода данных. Проблема состоит в том, что когда разработчик
пытается прочитать файл или записать что-то в него, используя Java IO, он блокирует файл
и доступ к нему до момента окончания выполнения своей задачи;
- Отсутствует поддержка виртуальных файловых систем;
- Нет поддержки ссылок;
- Очень большое количество checked исключений;
Работа с файлами всегда влечет за собой работу с исключениями: например, попытка создать новый
файл, который уже существует, вызовет IOException и т.п.