сохранить входной поток что это
Сохранить входной поток что это
Под вводом-выводом в программировании понимается процесс обмена информацией между оперативной памятью и внешними устройствами: клавиатурой, дисплеем, магнитными накопителями и т. п. Ввод — это занесение информации с внешних устройств в оперативную память, а вывод — вынос информации из оперативной памяти на внешние устройства. Такие устройства, как дисплей и принтер, предназначены только для вывода; клавиатура — устройство ввода. Магнитные накопители (диски, ленты) используются как для ввода, так и для вывода.
Основным понятием, связанным с информацией на внешних устройствах ЭВМ, является понятие файла. Всякая операция ввода-вывода трактуется как операция обмена с файлами: ввод — это чтение из файла в оперативную память; вывод — запись информации из оперативной памяти в файл. Поэтому вопрос об организации в языке программирования ввода-вывода сводится к вопросу об организации работы с файлами.
Внутренний файл — это переменная файлового типа, являющаяся структурированной величиной. Элементы файловой переменной могут иметь разный тип и, соответственно, разную длину и форму внутреннего представления. Внутренний файл связывается с внешним (физическим) файлом с помощью стандартной процедуры Assign. Один элемент файловой переменной становится отдельной записью во внешнем файле и может быть прочитан или записан с помощью одной команды. Попытка записать в файл или прочитать из него величину, не совпадающую по типу с типом элементов файла, приводит к ошибке.
Аналогом понятия внутреннего файла в языках Си/Си++ является понятие потока. Поток — это байтовая последовательность, передаваемая в процессе ввода-вывода.
Поток должен быть связан с каким-либо внешним устройством или файлом на диске. В терминологии Си это звучит так; поток должен быть направлен на какое-то устройство или файл.
Основные отличия файлов в Си состоят в следующем: здесь отсутствует понятие типа файла и, следовательно, фиксированной структуры записи файла. Любой файл рассматривается как байтовая последовательность:
Стрелочкой обозначен указатель файла, определяющий текущий байт файла. EOF является стандартной константой — признаком конца файла.
Существуют стандартные потоки и потоки, объявляемые в программе. Последние обычно связываются с файлами на диске, создаваемыми программистом. Стандартные потоки назначаются и открываются системой автоматически. С началом работы любой программы открываются 5 стандартных потоков, из которых основными являются следующие:
o stdin — поток стандартного ввода (обычно связан с клавиатурой);
o stdout — поток стандартного вывода (обычно связан с дисплеем);
o stderr — вывод сообщений об ошибках (связан с дисплеем).
Кроме этого, открывается поток для стандартной печати и дополнительный поток для последовательного порта.
Работая ранее с программами на Си, используя функции ввода с клавиатуры и вывода на экран, мы уже неявно имели дело с первыми двумя потоками. А сообщения об ошибках, которые система выводила на экран, относились к третьему стандартному потоку. Поток для работы с дисковым файлом должен быть открыт в программе.
Работа с файлами на диске. Работа с дисковым файлом начинается с объявления указателя на поток. Формат такого объявления:
Слово file является стандартным именем структурного типа, объявленного в заголовочном файле stdio.h. В структуре file содержится информация, с помощью которой ведется работа с потоком, в частности: указатель на буфер, указатель (индикатор) текущей позиции в потоке и т.д.
Следующий шаг — открытие потока, которое производится с помощью стандартной функции fopen (). Эта функция возвращает конкретное значение для указателя на поток и поэтому ее значение присваивается объявленному ранее указателю. Соответствующий оператор имеет формат:
Имя_указателя=fореn (“имя_файла”, “режим_открытия”) ;
Параметры функции fopen () являются строками, которые могут быть как константами, так и указателями на символьные массивы. Например:
Существуют следующие режимы открытия потока и соответствующие им параметры:
r открыть для чтения
w создать для записи
а открыть для добавления
r+ открыть для чтения и записи
w+ создать для чтения и записи
а+ открыть для добавления или
создать для чтения и записи
Поток может быть открыт либо для текстового, либо для двоичного (бинарного) режима обмена.
Понятие текстового файла: это последовательность символов, которая делится на строки специальными кодами — возврат каретки (код 13) и перевод строки (код 10). Если файл открыт в текстовом режиме, то при чтении из такого файла комбинация символов «возврат каретки — перевод строки» преобразуется в один символ \n — переход к новой строке.
При записи в файл осуществляется обратное преобразование. При работе с двоичным файлом никаких преобразований символов не происходит, т.е. информация переносится без всяких изменений.
Указанные выше параметры режимов открывают текстовые файлы. Если требуется указать на двоичный файл, то к параметру добавляется буква b. Например: rb, или « b », или r +b. В некоторых компиляторах текстовый режим обмена обозначается буквой t, т.е. записывается a+t или rt.
Если при открытии потока по какой-либо причине возникла ошибка, то функция fopen() возвращает значение константы null. Эта константа также определена в файле stdio.h. Ошибка может возникнуть из-за отсутствия открываемого файла на диске, нехватки места в динамической памяти и т.п. Поэтому желательно контролировать правильность прохождения процедуры открытия файла. Рекомендуется следующий способ открытия:
if (fp=fopen(«test.dat», «r»)==NULL)
В случае ошибки программа завершит выполнение с закрытием всех ранее открытых файлов.
Закрытие потока (файла) осуществляет функция fclose(), прототип которой имеет вид:
int fclose(FILE *fptr);
Здесь fptr обозначает формальное имя указателя на закрываемый поток. Функция возвращает ноль, если операция закрытия прошла успешно. Другая величина означает ошибку.
Запись и чтение символов. Запись символов в поток производится функцией putc() с прототипом
int putc (int ch, FILE *fptr);
Если операция прошла успешно, то возвращается записанный символ. В случае ошибки возвращается константа EOF.
Считывание символа из потока, открытого для чтения, производится функцией gets () с прототипом
int gets (FILE *fptr);
Функция возвращает значение считываемого из файла символа. Если достигнут конец файла, то возвращается значение EOF. Заметим, что это происходит лишь в результате чтения кода EOF.
Исторически сложилось так, что gets() возвращает значение типа int. To же можно сказать и про аргумент ch в описании функции puts(). Используется же в обоих случаях только младший байт. Поэтому обмен при обращении может происходить и с переменными типа char.
Пример 1. Составим программу записи в файл символьной последовательности, вводимой с клавиатуры. Пусть признаком завершения ввода будет символ *.
Урок №207. Потоки ввода и вывода
Обновл. 15 Сен 2021 |
Функционал потоков ввода/вывода не определен как часть языка C++, а предоставляется Стандартной библиотекой C++ (и, следовательно, находится в пространстве имен std). На предыдущих уроках мы подключали заголовочный файл библиотеки iostream и использовали объекты cin и cout для простого ввода/вывода данных. На этом уроке мы детально рассмотрим библиотеку iostream.
Библиотека iostream
При подключении заголовочного файла iostream, мы получаем доступ ко всей иерархии классов библиотеки iostream, отвечающих за функционал ввода/вывода данных (включая класс, который называется iostream). Иерархия этих классов выглядит примерно следующим образом:
Первое, что вы можете заметить в этой иерархии — множественное наследование (то, что на самом деле не рекомендуется использовать). Тем не менее, библиотека iostream была разработана и тщательно протестирована соответствующим образом, дабы избежать типичных ошибок, которые возникают при работе с множественным наследованием, поэтому вы можете спокойно использовать эту библиотеку.
Потоки в С++
Второе, что вы могли бы заметить — это частое использование слова «stream» (т.е. «поток»). По сути, ввод/вывод в языке C++ реализован с помощью потоков. Абстрактно, поток — это последовательность символов, к которым можно получить доступ. Со временем поток может производить или потреблять потенциально неограниченные объемы данных.
Мы будем иметь дело с двумя типами потоков. Поток ввода (или «входной поток») используется для хранения данных, полученных от источника данных: клавиатуры, файла, сети и т.д. Например, пользователь может нажать клавишу на клавиатуре в то время, когда программа не ожидает ввода. Вместо игнорирования нажатия клавиши, данные помещаются во входной поток, где затем ожидают ответа от программы.
И наоборот, поток вывода (или «выходной поток») используется для хранения данных, предоставляемых конкретному потребителю данных: монитору, файлу, принтеру и т.д. При записи данных на устройство вывода, это устройство может быть не готовым принять данные немедленно. Например, принтер все еще может прогреваться, когда программа уже записывает данные в выходной поток. Таким образом, данные будут находиться в потоке вывода до тех пор, пока принтер не начнет их использовать.
Некоторые устройства, такие как файлы и сети, могут быть источниками как ввода, так и вывода данных.
Хорошая новость заключается в том, что программисту не нужно знать детали взаимодействия потоков с разными устройствами и источниками данных, ему нужно только научиться взаимодействовать с этими потоками для чтения и записи данных.
Ввод/вывод в C++
Класс istream используется для работы с входными потоками. Оператор извлечения >> используется для извлечения значений из потока. Это имеет смысл: когда пользователь нажимает на клавишу клавиатуры, код этой клавиши помещается во входной поток. Затем программа извлекает это значение из потока и использует его.
Класс ostream используется для работы с выходными потоками. Оператор вставки используется для помещения значений в поток. Это также имеет смысл: вы вставляете свои значения в поток, а затем потребитель данных (например, монитор) использует их.
Класс iostream может обрабатывать как ввод, так и вывод данных, что позволяет ему осуществлять двунаправленный ввод/вывод.
Стандартные потоки в C++
Стандартный поток — это предварительно подключенный поток, который предоставляется программе её окружением. Язык C++ поставляется с 4-мя предварительно определенными стандартными объектами потоков, которые вы можете использовать (первые три вы уже встречали):
Небуферизованный вывод обычно обрабатывается сразу же, тогда как буферизованный вывод обычно сохраняется и выводится как блок. Поскольку clog используется редко, то его обычно игнорируют.
Пример на практике
Вот пример использования ввода/вывода данных со стандартными потоками:
Русские Блоги
Поток ввода-вывода Java
предисловие
Структура диаграммы классов потока Java:
(1) Понятие и роль потока
Примечание. В реальном проекте все операции ввода-вывода должны быть помещены в дочерние потоки, чтобы избежать блокировки основного потока.
(2) Классификация потока ввода-вывода
(3) поток символов и поток байтов
Происхождение символьного потока:Из-за различий в кодировке данных существуют потоковые объекты для эффективного манипулирования символами, Суть заключается в чтении указанной кодовой таблицы при чтении на основе потока байтов.
Являются ли данные на устройстве изображениями, видео, текстом, они хранятся в двоичном виде. В конце двоичный файл представлен 8-битным блоком данных, поэтому наименьшим блоком данных в компьютере является байт. Это означает, что поток байтов может обрабатывать все данные на устройстве, поэтому поток байтов также может обрабатывать символьные данные.
Вывод:Пока вы имеете дело с простыми текстовыми данными, использование символьных потоков является приоритетом. Используйте поток байтов для всего остального。
(4) Входной поток и выходной поток
Входной поток может быть только прочитан, а выходной поток может быть только записан.Программа должна использовать разные потоки в соответствии с различными характеристиками данных, которые должны быть переданы.
Входной поток: InputStream или Reader:Читать из файла в программу;
Выходной поток: OutputStream или Writer:Вывод из программы в файл。
(5) Узел потока и поток обработки
Узел потока: Может считывать / записывать потоки данных с / на определенное устройство ввода-вывода (например, диск, сеть), напрямую подключенное к источнику данных, считывать или считывать. Потоки узлов также называются потоками низкого уровня. Прямое использование потока узла не удобно для чтения и записи. Для более быстрого чтения и записи файлов доступен поток обработки.
На рисунке 15.3 показана принципиальная схема потока узлов. Как видно из рисунка, при использовании потоков узлов для ввода и вывода программа напрямую подключается к фактическому источнику данных и подключается к фактическому узлу ввода / вывода.
Поток процесса Он используется для подключения и инкапсуляции существующего потока и реализации функции чтения / записи данных через инкапсулированный поток. Обработка потоков также называется расширенными потоками. На рисунке 15.4 показана схема потока обработки.
Как видно из рисунка 15.4, при использовании потока обработки для ввода / вывода программа не связана напрямую с реальным источником данных и не связана с фактическими узлами ввода и вывода. Одним из очевидных преимуществ использования потоков обработки является то, чтоПока используется один и тот же поток обработки, программа может использовать один и тот же код ввода / вывода для доступа к различным источникам данных.Когда поток узлов, обернутый потоком обработки, изменяется, источник данных, к которому фактически обращается программа, изменяется соответственно.
2. Принцип анализа потока
Поток Java Io включает в себя более 40 классов. Эти классы выглядят грязно, но на самом деле они очень регулярные, и между ними очень тесная связь. Более 40 классов потока Java Io относятся к следующим 4 абстрактным классам. Получено из базового класса.
Input Для InputStream и Reader они абстрагируют устройство ввода в «водопроводную трубу», и каждая «капля воды» в этой водопроводной трубе располагается по очереди, как показано на рисунке 15.5:
code Как видно из рисунка 15.5, методы обработки потока байтов и символов фактически аналогичны, за исключением того, что они обрабатывают разные блоки ввода / вывода. Входной поток использует неявный указатель записи, чтобы указать, какая «капля воды» в данный момент начинает считываться. Всякий раз, когда программа берет одну или несколько «капель воды» из InputStream или Reader, указатель записи перемещается после ориентации, в противном случае Кроме того, InputStream и Reader предоставляют несколько методов для управления перемещением указателя записи.
Для OutputStream и Writer они также абстрагируют устройство вывода в «водопроводную трубу», но в водопроводной трубе нет капли воды, как показано на рисунке 15.6:
Как показано на рисунке 15.6, при выполнении вывода программа эквивалентна последовательному добавлению «водяных капель» в водопроводную трубу выходного потока. Выходной поток также использует скрытый указатель для определения текущей капли воды. Где бы он ни находился, всякий раз, когда программа выводит одну или несколько капель воды в OutputStream или Writer, указатель записи автоматически перемещается назад.
На рисунках 15.5 и 15.6 показана базовая концептуальная модель Java Io. Кроме того, модель потока обработки Java отражает гибкость проектирования потока ввода и вывода Java. Функция обработки потока в основном отражена в следующих двух аспектах.
Поток обработки может быть «привит» поверх любого существующего потока, что позволяет приложениям Java использовать один и тот же код и прозрачно получать доступ к потокам данных с разных устройств ввода и вывода. На рисунке 15.7 показана модель потока обработки.
3. Классификационная таблица потока
Примечание. Классы, выделенные жирным шрифтом в таблице ниже, представляют поток узлов и должны быть непосредственно связаны с указанным физическим узлом: классы, выделенные курсивом, представляют абстрактный базовый класс, и экземпляры не могут быть созданы напрямую.
4. Базовый класс системы ввода-вывода
Базовый класс системы Io (InputStream / Reader, OutputStream / Writer).
(1) InputStream и Reader
InputStream и Reader являются абстрактными базовыми классами для всех входных потоков, они не могут создавать экземпляры для самостоятельного ввода, но они станут шаблонами для всех входных потоков, поэтому их методы являются методами, которые могут использоваться всеми входными потоками.
(2) OutputStream и Writer
Использование OutputStream и Writer также очень похоже, они используют модель, показанную на рисунке 15.6, для выполнения ввода.
Поскольку поток символов непосредственно использует символы в качестве единицы операции, Writer может использовать символьные строки вместо символьных массивов, то есть принимать объекты String в качестве параметров.
5, примеры применения потоков ввода-вывода
(1) Использование файлового потока
Примечание: вышеупомянутая программа наконец использовала fis.close (), чтобы закрыть поток ввода файла. Как и при программировании JDBC, ресурс ввода-вывода файла, открытый в программе, не принадлежит ресурсу памяти. Механизм сбора мусора не может перезапустить ресурс, поэтому он должен отображаться Закройте открытые ресурсы ввода-вывода.
Используйте FileReader для чтения файла:
Можно видеть, что нет никакой разницы между использованием FileInputStream и FileReader для чтения и записи файлов, отличаются только единицы операций.
FileOutputStream и FileWriter
Запустив программу, вы можете увидеть, что в каталоге, указанном потоком вывода, есть дополнительный файл: newTest.txt, содержимое этого файла точно такое же, как содержимое файла Test.txt. Использование FileWriter в основном аналогично использованию FileOutputStream, которое я расскажу здесь.
Примечание. При использовании io-потока java для выполнения вывода не забудьте закрыть выходной поток. Помимо обеспечения повторного использования физических ресурсов потока, может быть возможным сбросить данные в буфере выходного потока на физический узел (поскольку Перед выполнением метода close () автоматически выполняется метод flush () выходного потока). Многие потоки вывода Java предоставляют функцию кэширования по умолчанию. На самом деле нам не нужно специально запоминать, какие потоки имеют функцию кэширования, а какие нет. Только нормальное закрытие всех потоков вывода может гарантировать нормальную работу программы.
(2) Использование буферизованного потока
Следующее представляет использование потоков байтового кэша (использование потоков символьного кэша такое же, как поток байтового кэша и не будет представлено):
Можно видеть, что способ чтения и записи данных с использованием потока байтового буфера не отличается от потока файлов (FileInputStream, FileOutputStream), за исключением того, что поток обработки присоединяется к потоку файлов для чтения и записи. Принцип кеширования потока описан в следующем разделе.
В приведенном выше коде мы использовали поток кэша и поток файлов, но мы только закрыли поток кэша. Это необходимо отметить. Когда мы используем поток обработки для подключения к потоку узлов, нам нужно только отключить обработку верхнего уровня. Java автоматически закроет поток узлов для нас.
(3) Использование потоков преобразования
Далее в качестве примера используется ввод с клавиатуры, чтобы представить использование потока преобразования. Java использует System.in для представления ввода. Т.е. клавиатурный ввод, но этотСтандартный поток ввода является экземпляром класса InputStream, который не очень удобен в использовании, а ввод с клавиатуры представляет собой весь текстовый контент, поэтому вы можете использовать InputStreamReaderОберните его в BufferedReader и используйте метод readLine () в BufferedReader для чтения по одной строке за раз, как показано в следующем коде:
Вышеупомянутая программа помещает System.in в BufferedReader. Поток BufferedReader имеет функцию буфера. Он может читать одну строку текста за раз, отмеченный символом новой строки. Если он не читает символ новой строки, программа блокируется. Подождите, пока вы не прочитаете новую строку. Эту функцию можно найти, запустив вышеуказанную программу. Когда мы выполняем ввод на консоли, программа будет печатать только что введенный контент, когда мы нажимаем клавишу Enter.
(4) Использование потоков объектов
Этот поток позволяет читать или записывать пользовательские классы, но для реализации этой функциональности классы, которые читаются и пишутся, должны реализовывать интерфейс Serializable.。
Некоторые соображения при использовании потоков объектов:
1. Порядок чтения должен соответствовать порядку записи, иначе произойдут ошибки чтения.
2. Добавьте ключевое слово transient перед свойствами объекта, тогда свойства объекта не будут сериализованы.
(5) Использование специальных потоков
Иногда нет необходимости хранить информацию всего объекта, а просто хранить данные-члены объекта. Предполагается, что тип данных-членов является базовым типом данных Java. Это требование не требует использования потоковых объектов, связанных с вводом и выводом объекта. Вы можете использовать DataInputStream, DataOutputStream для записи или чтения данных.
Преимущество DataInputStream состоит в том, что при чтении данных из файла вам не нужно беспокоиться о том, когда остановиться при чтении строки или при чтении типа int. Для правильного чтения можно использовать соответствующие методы readUTF () и readInt (). Полные данные типа.
Данные члена экземпляра класса Member предназначены для записи в файл, а после считывания данных файла данные должны быть восстановлены как объект Member. Следующий код просто демонстрирует, как реализовать это требование.
Русские Блоги
Глава VII Ввод потока и выходной поток (Улучшение плана Notes)
Входной поток и выходной поток
I. Основная концепция потока данных
1. Понятие потока данных
Поток данных означает группу,Заказ, начальная точка, конечная точка сбора байт
ДжаваРазличные типы входов, источник выхода абстракция, где входные или выходные данные поток данных
Поток данных подается на вход входных потоков данных и потоки выходных данных
IO пакет дает представлениеЧетыре семейства потоков данных
2. Введите поток данных
Ввод потока данных только в состоянии прочитать поток данных, которые не могут быть записаны, используется для ввода информации в компьютер.
Основной метод операции с данными в потоке входных данных выглядит следующим образом:
Если вам нужно читать в направлении, вам нужно использовать операцию перезагрузки.
Поток данных 3. Выходной
выходной поток данных является только потоком, который не может быть прочитан, используется для вывода данных из компьютера.
Большая часть выходного потока данных от абстрактных классовOutputStream унаследовал
Метод для вывода потока данных, заключается в следующем
В настоящее время в универсальной среде хранения,Скорость доступа к памяти является самым быстрым
Во-вторых, поток данных Базовый байт
Поток данных документа
INPUTSTREAM и OutputStream все абстрактные классы
Абстрактные классы unformogeneous, поэтому они все подклассы их.
Потоки данных файлов включают FileInputStream и FileOutputStream
Марк и сброса перестраивать операции не поддерживаются
Поток данных файла
FileInputStream
FileOutputStream
Поток данных 2. Фильтр
а. Поток данных буфера
Данные буфераBufferedInputStream и Bufferedouputstream
существоватьСоздание объектов экземпляра для этого классаКогда вы можете использовать два метода
Используйте размер буфера по умолчанию
Установите размер буфера
ОбщийВыключите выходной буфер потокаЭто должно быть первымFLUSH навязывает остальные данные
Убедитесь, что все данные, записанные в буфер
б. Поток данных операции
DataInputStream и DataOutputStream
Они позволяют читать и писать на Java основных типов, Boolean, Float и т.д.
Пусть IS и OS являются объектами создаваемого потока данных ввода / вывода, а также создавать форматы
Эти два класса может работать по основным видам из-за следующие методы
DataInputStream входных данных поток
DataOutputStream выходных данных потока
Эти два методаПара,из-заПроблемы кодирования символов следует избегать использования этих партийЗакон, позжеЧитатель и писатель перегруженЭти два метода
3. Объект потока
Java предоставляетОбъект записывает поток данных файла или чтения из потоков данных файловФункция реализуется двумя классами ObjectInputStream и ObjectOutputStream, называемый потоковый объект
Поток данных записи объекта
Написать объект java.util.Date в файле
Поток данных пользователя объекта
Нужно отметить, что readObject возвращает поток данных с типом Object
Возвратившись содержание должно быть выполнено после преобразования имени правильного класса
4. Сериализация
а. Концепция Сериализация
Объект настойчивости
Преобразование объектов в последовательности байтов называется последовательность объектов
Процесс восстановления последовательности байт к объектам, называется замедление
Если переменная является ссылкой на другой объект, объект ссылки также необходимо сериализовать, и этот процесс является рекурсивным.
Serializable
Serialized пример
экземпляр объекта хранения
Пример восстановления объекта
Структура объекта б.
СериализацияТолько сохранить не-статической переменной-члена объекта
ПРЕХОДЯЩАЯ ключевое слово
Сериализация может включать в себя хранение объектов на диск или данные по сети,проблема безопасности
Если упорная объект содержит ссылку на unsmosturing элементов, то это приведет к выходу из строя операции.
Класс ПЭО не реализует интерфейс сериализации, и не ввести ключевое слово TRANSIENT при введении ПЭО в классе СТЮ.
Кроме того, что это не влияет на работу сериализации
Три. Основные персонажи
Читатель и писатель
2. Читатель и писатель
Реализация через читатель и писатель, чтение и записиПреобразование данных в потоки данных между различными платформами
Unicode используется Java является большим набором символов, с двумя байт (16bit) для представления символа.Набор ASCII символов, используемый в других языках, один байт (8 бит) представляет символ,Байт отличается от персонажей.
Среди них, ключ этого преобразования состоит из двух подклассов.
InputStreamReader и OutputStreamWriter два класса
Раньше посредник между потоком байт и потоком символов
3. чтения и записи буфера
Если другие операции ввода-вывода, еслиФормат преобразования осуществляется в большем блоке данных блока, а затем повысить эффективность
Иначе при условииBufferedReader и BufferedWriter
Его метод построения похож на BufferedInputStream
более тогоОбеспечить обработку партииЗакон
будуBufferedReader и BufferedWriter правильно подключены к концу InputStreamReader и OutputStreamWriter ‘
Четыре. Обработка
класса FILE
FИЛЬ класс предоставляет некоторые инструменты для получения основной информации и оперативных файлов
До начала операции ввода-вывода выполняется, вы должны сначала получить основную информацию об этом файле (абсолютный путь, может быть для чтения / записи, размер файла)
Создать новый объект FileСуществует три вида методов строительства
Метод с именем файла
Метод измерения файла
Общая информация файла и метод
инструмент Каталог
2. Файл доступа Random
класс RandomAccessFile
Создайте файл произвольного доступа имеет следующие два пути
Используйте имя файла
Используйте объект файла
Информация о чтении и записи RandomAccessFile такая же, как метод ввода / вывода данных, Вы можете получить доступ к всем методам чтения и записи в классах DataInPustream и DataOutputStream
Интеллектуальная рекомендация
Из-за добавления Lombok’s @Accessors (chain = true) класс инструмента копирования bean-компонентов не работает
ПредисловиеСеть Time Novel wap.youxs.org На этот раз был построен новый проект, потому чтоLombok Я привык, но раньше пользовался[email protected],@AllArgsConstructor,@EqualsAndHashCodeДождитесь очередного коммен.
ios FMDB
1. Что такое FMDB? В iOS использование функций языка C для добавления, удаления, изменения и запроса собственных баз данных SQLite является сложным и хлопотным, поэтому появился ряд библиотек, инкапсу.
POJ2236 WirelessNetWork (также проверьте набор)
Ссылка на заголовок Этот вопрос представляет собой простое приложение параллельного поиска, которое не сложно. (Не потребовалось много времени, чтобы увидеть, что Accepted чувствует себя так хорошо, х.