33 Java. Потоки ввода-вывода. Работа с файлами. Белорусский государственный экономический университет кафедра экономической информатики
Скачать 1.6 Mb.
|
Замечание о работе с ZIP-архивамиКроме общего функционала для работы с файлами Java предоставляет функциональность для работы с таким видом файлов как zip-архивы. Для этого в пакете java.util.zip определены два класса - ZipInputStream и ZipOutputStream. Замечание. Обойтисьвданномслучаеонлайн-интегрированнымисредаминеполучиться. Для создания архива используется класс ZipOutputStream. Для создания объекта ZipOutputStream в его конструктор передается поток вывода. Для чтения архивов применяется класс ZipInputStream. В конструкторе он принимает поток ввода, указывающий на zip-архив. И затем в цикле необходимо вывести все файлы, которые находятся в данном архиве. Более подробно с процессов добавления и/или извлечения файлов из архива можно ознакомиться на сайте METANIT.COM (https://metanit.com/java/tutorial/6.12.php). Вопросы к тестуВыберите верные утверждения для потоков ввода-вывода:поток ввода-вывода - это абстракция, которая используется для чтения или записи информации; поток ввода-вывода всегда связан с реальным физическим устройством; может быть определен поток, который связан с файлом для чтения или записи информации; объект, из которого можно считать данные, называется потоком ввода; объект, в который можно записывать данные - потоком вывода; Выберите абстрактные суперклассы управляющие потоком ввода-вывода:InputStream; OutputStream; Reader; Writer; FileOutputStream; FileInputStream; FileReader; FileWriter; Имя метода закрывающего поток?close()Что записано в файле notes.txt в результате работы программы? import java.io.*; public class Main { public static void main(String[] args) { String text = "Hello world!"; try(FileOutputStream fos = new FileOutputStream("notes.txt")) { byte[] buffer = text.getBytes(); fos.write(buffer, 0, buffer.length); } catch(IOException ex){ System.out.println(ex.getMessage()); } } } Что записано в файле notes.txt в результате работы программы?import java.io.*; public class Main { public static void main(String[] args) { String text = "Hello world!"; try(FileOutputStream fos = new FileOutputStream("notes.txt")) { byte[] buffer = text.getBytes(); fos.write(buffer, 6, 1); } catch(IOException ex){ System.out.println(ex.getMessage()); } } } Что записано в файле notes.txt в результате работы программы?import java.io.*; public class Main { public static void main(String[] args) { String text = "Hello world!"; try(FileOutputStream fos = new FileOutputStream("notes.txt")) { byte[] buffer = text.getBytes(); fos.write(buffer[4]); } catch(IOException ex){ System.out.println(ex.getMessage()); } } } Файл notes.txt содержит фразу "Hello world!" Результат работы программы? import java.io.*; public class Main { public static void main(String[] args) { try(FileInputStream fin = new FileInputStream("notes.txt")) { String result = " "; System.out.print(fin.available()); int i = -1; while((i = fin.read()) != -1){ result = result + (char) i; } System.out.print(result); } catch(IOException ex){ System.out.println(ex.getMessage()); } } } Файл notes.txt содержит фразу "Hello world!" Результат работы программы? import java.io.*; public class Main { public static void main(String[] args) { try(FileInputStream fin = new FileInputStream("notes.txt")) { byte[] buffer = new byte[fin.available()]; fin.read(buffer, 0, fin.available()); for(int i = 0; i < buffer.length; i++){ System.out.print((char) buffer[i]); } } catch(IOException ex){ System.out.println(ex.getMessage()); } } } Файл notes.txt содержит фразу "Hello world!" Результат работы программы? import java.io.*; public class Main { public static void main(String[] args) { try(FileInputStream fin = new FileInputStream("notes.txt")) { byte[] buffer = new byte[fin.available()]; fin.read(buffer, 0, fin.available()); for(int i = 3; i < buffer.length - 2; i++){ System.out.print((char) buffer[i]); } } catch(IOException ex){ System.out.println(ex.getMessage()); } } } Файл notes.txt содержит фразу "Hello world!" Результат работы программы? import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Scanner in = new Scanner(new FileInputStream("notes.txt")); String s = in.nextLine(); System.out.print(s); in.close(); } } Файл notes.txt содержит фразу "Hello world!" Результат работы программы? import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Scanner in = new Scanner(new FileInputStream("notes.txt")); System.out.print(in.nextLine()); in.close(); } } Файл notes.txt содержит фразу "Hello world!". Какую информацию содержит файл notes_new.txt после работы программы?import java.io.*; public class Main { public static void main(String[] args) { try(FileInputStream fin = new FileInputStream("notes.txt"); FileOutputStream fos = new FileOutputStream("notes_new.txt")) { byte[] buffer = new byte[fin.available()]; fin.read(buffer, 0, buffer.length); fos.write(buffer, 0, buffer.length); } catch(IOException ex){ System.out.println(ex.getMessage()); } } } Верно ли утверждение: «Необходимо явно закрыть поток или потоки, открытые в конструкции try-with-resources.»ДаУкажите конструкцию try-with-resources. try { fin = new FileInputStream("notes.txt"); //блок try } try(FileInputStream fin = new FileInputStream("notes.txt")) { //блок try } try(FileInputStream fin = new FileInputStream("notes.txt"); FileOutputStream fos = new FileOutputStream("notes_new.txt")) { //блок try } Сколько ресурсов можно перечислить в конструкции try-with- resources?Неограниченное числоИсключает ли конструкции try-with-resources использование блока catch()? нет Результат работы программы?import java.io.*; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner("раз\nдва\nтри\n"); while (scanner.hasNextLine()) { System.out.println(scanner.nextLine()); } scanner.close(); } } Результат работы программы?import java.io.*; import java.util.Scanner; public class Main { public static void main(String[] args) { String init = "раз \n два \n три \n"; Scanner scanner = new Scanner(init).useDelimiter("\\s*\n\\s*"); while (scanner.hasNext()) { System.out.print(scanner.next() + " "); } scanner.close(); } } Результат работы программы?import java.io.*; import java.util.Scanner; public class Main { private static void createFile(String str, String fileName) throws IOException { FileWriter fw = new FileWriter(fileName); fw.write(str); fw.close(); } private static String readFile(String fileName) throws IOException { FileReader fr = new FileReader(fileName); Scanner scan = new Scanner(fr); String str = scan.nextLine(); scan.close(); fr.close(); return str; } public static void main(String[] args) throws IOException { createFile("Привет\n Мир", "file.txt"); String result = readFile("file.txt"); System.out.println(result); } } Укажите размер используемого в программе буфера в килобайтах?import java.io.*; public class Main { public static void main(String[] args) { String text = "Buffered: Hello world!"; try(FileOutputStream out = new FileOutputStream("notes.txt"); BufferedOutputStream bos = new BufferedOutputStream(out)) { byte[] buffer = text.getBytes(); bos.write(buffer, 0, buffer.length); } catch(IOException ex){ System.out.println(ex.getMessage()); } } } Укажите размер используемого в программе буфера в килобайтах?import java.io.*; public class Main { public static void main(String[] args) { try(FileInputStream fin = new FileInputStream("notes.txt"); BufferedInputStream br = new BufferedInputStream(fin, 20480)) { System.out.printf("Размер файла: %d байт \n", br.available()); int i = -1; while((i = br.read()) != -1){ System.out.print((char) i); } } catch(IOException ex) { System.out.println(ex.getMessage()); } } } Выберите верные утверждения:сериализация – это процесс перевода какой-либо структуры данных в последовательность битов; десериализации - восстановление начального состояния структуры данных из битовой последовательности; сериализация предшествует записи состояния объекта в поток; десериализация проводится в процессе восстановления состояния объекта из потока; Выберите верные утверждения:сериализовать можно только те объекты, которые реализуют интерфейс Serializable; интерфейс Serializable определяет методы сериализации; интерфейс Serializable указывает системе, что объект класса, реализующий его, может быть сериализован; десериализация – это обратный процесс чтения ранее сериализованных данных из потока «по умолчанию» сериализуются все переменные объекта; невозможно исключить поля объекта из сериализации; Выберете варианты правильного синтаксиса применения модификатора transient:class Person implements Serializable { private String name; private transient int age; //методы } class transient Person implements Serializable { private String name; private transient int age; //методы } class Person private transient int age; //методы } Выберите правильные утверждения о классе File:он определен в пакете java.io; он работает напрямую с потоками; его задачей является только управление информацией о файлах и каталогах; файлы и каталоги в Java не описываются одним классом File; Может ли объект File соответствовать файлу, которого еще нет?не может; всегда может; может, если передать в конструктор класса File значение директории: String dirPath = "/"; File f = new File(dirPath); File[] files = f.listFiles(); Зачем нужен класс FileReader?предназначен для чтения потоков символов; конструкторы этого класса предполагают, что принимается кодировка символов «по умолчанию»; с помощью конструкторов этого класса можно изменить размер байтового буфера; Зачем нужен класс FileWriter?предназначен для записи потоков символов; с помощью конструкторов этого класса можно установить кодировку символов по выбору; размер байтового буфера всегда равен размеру «по умолчанию»; ЛитератураРуководство по языку программирования Java/ METANIT.COM - [Электронный ресурс], URL: https://metanit.com/java/tutorial/ (дата обращения: 08.06.22) Блинов, И.Н. Java from EPAM / И.Н. Блинов, В.С. Романчик. - Минск: Четыре четверти, 2020. - 560 с. |