Ревью 5. Что такое потоки вводавывода Как это реализовано в Java 3 Классынадстройки потоков вводавывода 4
Скачать 110.73 Kb.
|
Какие подклассы класса Writer вы знаете, для чего они предназначены?Writer - абстрактный класс, описывающий символьный вывод; BufferedWriter - буферизованный выходной символьный поток; CharArrayWriter - выходной поток, который пишет в символьный массив; FileWriter - выходной поток, пишущий в файл; FilterWriter - абстрактный класс, предоставляющий интерфейс для классов-надстроек; OutputStreamWriter - выходной поток, транслирующий байты в символы; PipedWriter - выходной канал; PrintWriter - выходной поток символов, включающий методы print() и println(); StringWriter - выходной поток, пишущий в строку; Как преобразовать считанные байты в символы? Какой класс для этого используется?Консольный ввод в Java выполняется с помощью считывания из объекта System.in. Чтобы получить символьный поток, который присоединен к консоли, нужно перенести ("упаковывать") System.in в объект типа BufferedReader. Класс BufferedReader поддерживает буферизированный входной поток. Обычно используется следующий его конструктор: BufferedReader (Reader inputReader) где inputReader — поток, который связан с создающимся экземпляром класса BufferedReader. Reader — абстрактный класс. Один из его конкретных подклассов — это InputStreamReader, который преобразует байты в символы. Чтобы получить InputStreamReader-объект, который связан с System.in, используйте следующий конструктор: InputStreamReader (InputStream inputStream) В конструкторе можно выбирать кодировку. Отличие Scanner’a от BufferedReader’a?Cканнер очень сильно проигрывает по быстродействию, он примерно в 1000 раз медленнее, чем BufferedReader. Но у сканнера уже впилены удобные функции по разбору текста на разные данные (целые числа, дробные числа, текст и тп), когда у bufferedreader-a их придется отдельно парсить. Итог - если данных мало, то удобнее сканнер, если много или важна быстрота - то однозначно bufferedreader Расскажи про класс File? Как создать новый файл на жестком диске?Класс File, определенный в пакете java.io, не работает напрямую с потоками. Его задачей является управление информацией о файлах и каталогах. Хотя на уровне операционной системы файлы и каталоги отличаются, но в Java они описываются одним классом File. Экземпляры класса File неизменяемы — после создания абстрактный путь, представленный этим объектом, никогда не изменится. В зависимости от того, что должен представлять объект File - файл или каталог, мы можем использовать один из конструкторов для создания объекта: File(String путь_к_каталогу) File(String путь_к_каталогу, String имя_файла) File(File каталог, String имя_файла) Класс File имеет ряд методов, которые позволяют управлять файлами и каталогами. Какие методы класса File вы знаете?boolean createNewFile(): делает попытку создать новый файл; boolean delete(): делает попытку удалить каталог или файл; boolean mkdir(): делает попытку создать новый каталог; boolean renameTo(File dest): делает попытку переименовать файл или каталог; boolean exists(): проверяет, существует ли файл или каталог; String getAbsolutePath(): возвращает абсолютный путь для пути, переданного в конструктор объекта; String getName(): возвращает краткое имя файла или каталога; String getParent(): возвращает имя родительского каталога; boolean isDirectory(): возвращает значение true, если по указанному пути располагается каталог; boolean isFile(): возвращает значение true, если по указанному пути находится файл; boolean isHidden(): возвращает значение true, если каталог или файл являются скрытыми; long length(): возвращает размер файла в байтах; long lastModified(): возвращает время последнего изменения файла или каталога; String[] list(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге; File[] listFiles(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге. Если объект File представляет каталог, то его метод isDirectory() возвращает true. И поэтому мы можем получить его содержимое - вложенные подкаталоги и файлы с помощью методов list() и listFiles(). Работа с файлами аналогична работе с каталога. 1. Создайте файл с классом java.io.File Вам нужно использовать метод File.createNewFile(). Этот метод возвращает логическое значение: истина, если файл выполнен. false, если файл уже существует или операция по какой-то причине не открывается. Этот метод также генерирует исключение java.io.IOException, когда он не может создать файл. Когда мы создаем объект File, передавая имя файла, он может быть с абсолютным путем, или мы можем предоставить только имя файла, или мы можем предоставить относительный путь. Для неабсолютного пути объект File пытается найти файлы в корневом каталоге проекта. Если мы запустим программу из командной строки, для неабсолютного пути объект File попытается найти файлы из текущего каталога. Экземпляры класса File являются неизменяемыми; то есть, после создания абстрактный путь, представленный объектом File, никогда не изменится. 2. Создайте файл с классом java.io.FileOutputStream Если вы хотите создать новый файл и в то же время, если хотите записать в него некоторые данные, вы можете использовать метод записи FileOutputStream. В Java FileOutputStream является классом потока байтов. Чтобы записать данные в файл, вы должны преобразовать данные в байты, а затем сохранить их в файл. Класс FileOutputStream хранит данные в виде отдельных байтов. Может использоваться для создания текстовых файлов. Файл представляет собой хранилище данных на втором носителе, таком как жесткий диск или компакт-диск. Метод FileOutputStream.write() автоматически создает новый файл и записывает в него содержимое. 3. Создайте файл с помощью Java.nio.file.Files – Java NIO Files.write() – лучший способ создать файл, и он должен быть вашим предпочтительным подходом в будущем, если вы его еще не используете. Это хороший вариант, потому что нам не нужно беспокоиться о закрытии ресурсов ввода-вывода. Каждая строка представляет собой последовательность символов и записывается в файл последовательно, каждая строка заканчивается разделителем строк платформы. 4. Java также может создавать временные файлы Создание временного файла в java может потребоваться во многих сценариях, но в основном это происходит во время модульных тестов, где вы не хотите сохранять результаты. Как только тестовый пример закончен, вас не волнует содержимое файла. Создание временного файла с использованием java.io.File.createTempFile() Для создания временного файла используются следующие два метода. 1. createTempFile(Path, String, String, FileAttribute>… attrs) – создает файл tmp в указанном каталоге. Вышеуказанный метод принимает четыре аргумента. Путь -> указать каталог, в котором будет создан файл. Строка -> чтобы упомянуть префикс имени файла. Используйте ноль, чтобы избежать префикса. Строка -> чтобы упомянуть суффикс имени файла. т.е. расширение файла. Используйте null, чтобы использовать .tmp в качестве расширения. attrs -> Это необязательно, чтобы упоминать список атрибутов файла, чтобы установить атомарно при создании файла Например. Files.createTempFile(path,null, null); – создает временный файл с расширением .tmp по указанному пути 2. createTempFile(String, String, FileAttribute>) – создает временный файл во временном каталоге по умолчанию системы / сервера. https://java-blog.ru/osnovy/kak-sozdat-fayl-java |