Java — Чтение из файла


Содержание

Чтение объекта из файла в Java

В предыдущем примере было показано, как записать Java объект в файл. Настало время узнать, как прочитать Java объект из файла.

Процесс восстановления состояния сохраненного объекта из файла называется десериализацией. Упрощенно процедура десериализации объекта выглядит следующим образом:

Пример записи объекта в файл

Как видно из результатов работы программы, мы получили из файла ровно тот же объект, что и сохранили.

Чтение и запись данных из файла в файл в консольном приложении под Java в IntelliJ >В статье рассказывается как считать и записать данные из файла под Java в IntelliJ IDEA на примере программы сложения двух чисел.

11.10.2015 2 комментария 16 996 просмотров

В статье рассказывается как считать и записать данные из файла под Java в IntelliJ >

Почти все олимпиады по программированию работают с консольными программами, которые что-то считали из файла, провели манипуляции, а потом результат записали в другой файл. Да и многие обычные консольные программы работают по такому же принципу. Вот тут и рассмотрим, как это сделать.

Рассматривать я буду очень простой способ чтения из файла и записи в файл, чтобы код занимал минимум места, так как на тех же олимпиадах времени на написание «правильного» кода мало. Разумеется, что в практических приложениях надо будет предусмотреть множество проверок, обработок исключений и др.

Содержание

Создание проекта

Создайте пустое консольное приложение с именем, например, ReadWriteInFiles . Если вы не помните, как это сделать, то посмотрите в статье Создание пустого консольного приложения

Чтение данных из текстового файла с использованием Java

Мне нужно читать текстовые файлы построчно, используя Java. Я использую available() метод FileInputStream для проверки и зациклить файл. Но во время чтения цикл завершается после строки, предшествующей последней. Т.е. , если файл имеет 10 строк, цикл читает только первые 9 строк. Используемый фрагмент:

13 ответов

Вы не должны использовать available() . Это не дает никаких гарантий, что так всегда. Из документов API available() :

Возвращает оценку количества байтов, которые могут быть прочитаны (или пропущены) из этого входного потока без блокировки при следующем вызове метода для этого входного потока.

Возможно, вы захотите использовать что-то вроде

Как насчет использования сканера? Я думаю, что использовать сканер проще

Если вы хотите читать построчно, используйте BufferedReader . У него есть метод readLine() , который возвращает строку в виде строки или ноль, если достигнут конец файла. Таким образом, вы можете сделать что-то вроде:

(обратите внимание, что этот код не обрабатывает исключения и не закрывает поток и т. д.)

Чтение текстового файла в Java

кажется, есть разные способы чтения и записи данных из файлов в Java.

Я хочу прочитать данные ASCII из файла. Каковы возможные пути и их различия?

24 ответов

ASCII-это текстовый файл, поэтому вы будете использовать читателей для чтения. Java также поддерживает чтение из двоичного файла с помощью InputStreams. Если считываемые файлы огромны, вы захотите использовать командой bufferedreader на FileReader для улучшения производительности.

пройти в этой статье о том, как использовать Reader

Я также рекомендую вам скачать и прочитать эту замечательную (пока бесплатно) забронировать называется Мышление На Java

В Java 7:

В Java 8:

мой любимый способ чтения небольшого файла-использовать BufferedReader и StringBuilder. Это очень просто и по существу (хотя и не особенно эффективно, но достаточно хорошо для большинства случаев):

некоторые указали, что после Java 7 Вы должны использовать try-with-resources (т. е. автоматическое закрытие) особенности:

когда я читаю строки, как это, я обычно хочу сделать некоторую обработку строк в строке в любом случае, поэтому я иду на это реализация.

хотя, если я хочу на самом деле просто прочитать файл в строку, я всегда использую Apache Commons IO С классом IOUtils.метод toString. Вы можете посмотреть на источник здесь:

и еще проще с Java 7:

самый простой способ-использовать Scanner класс в Java и объект FileReader. Простой пример:

Scanner имеет несколько методов для чтения в строках, числах и т. д. Дополнительную информацию об этом можно найти на странице документации Java.

например, чтение всего содержимого в String :

кроме того, если вам нужна конкретная кодировка вы можете использовать это вместо FileReader :

вот простое решение:

вот еще один способ сделать это без использования внешних библиотек:

Я должен был проверить разные способы. Я прокомментирую свои выводы, но, короче говоря, самый быстрый способ-использовать простой старый BufferedInputStream над FileInputStream. Если необходимо прочитать много файлов, то три потока сократят общее время выполнения примерно до половины, но добавление большего количества потоков будет постепенно снижать производительность, пока не займет в три раза больше времени для завершения двадцати потоков, чем только с одним потоком.

предполагается, что вы должны прочитать файл и сделать что-то значимое с его содержанием. В примерах здесь читаются строки из журнала и подсчитываются те, которые содержат значения, превышающие определенный порог. Поэтому я предполагаю, что однострочный Java 8 Files.lines(Paths.get(«/path/to/file.txt»)).map(line -> line.split(«;»)) — это не вариант.

Я тестировал на Java 1.8, Windows 7 и SSD и HDD дисках.

Я написал шесть различных реализаций:

rawParse: используйте BufferedInputStream над FileInputStream, а затем вырезать строки чтения байт за байтом. Это превзошло любой другой однопоточный подход, но это может быть очень неудобно для файлов, отличных от ASCII.

lineReaderParse: используйте BufferedReader над FileReader, читайте строку за строкой, разделяйте строки, вызывая строку.расщеплять.)( Это примерно на 20% медленнее, чем rawParse.

lineReaderParseParallel: это то же самое, что lineReaderParse, но он использует несколько потоков. Это самый быстрый вариант в целом случаи.

Цукерберг рекомендует:  Всплывающие панели с помощью jQuery


nioFilesParse: используйте java.НИО.файлы.Файлы.lines ()

nioAsyncParse: используйте асинхронный канал с обработчиком завершения и пулом потоков.

nioMemoryMappedParse: используйте файл, сопоставленный с памятью. Это действительно плохая идея, дающая время выполнения по крайней мере в три раза больше, чем любая другая реализация.

это среднее время для чтения 204 файлов по 4 МБ каждый на четырехъядерный i7 и SSD-накопитель. Файлы создаются на лету, чтобы избежать кэширования диска.

Я нашел разницу меньше, чем я ожидал, между запуском на SSD или жестком диске SSD примерно на 15% быстрее. Это может быть связано с тем, что файлы генерируются на нефрагментированном HDD, и они читаются последовательно, поэтому вращающийся диск может работать почти как SSD.

Я был удивлен низкой производительностью реализации nioAsyncParse. Любой Я реализовал что-то неправильно или многопоточная реализация с использованием NIO, а обработчик завершения выполняет то же самое (или даже хуже), что и однопоточная реализация с java.IO API. Кроме того, асинхронный синтаксический анализ с CompletionHandler намного длиннее в строках кода и сложнее реализовать правильно, чем прямая реализация на старых потоках.

теперь шесть реализаций, за которыми следует класс, содержащий их все, плюс параметризуемый метод main() это позволяет играть с количеством файлов, размером файла и степенью параллелизма. Обратите внимание, что размер файлов варьируется плюс минус 20%. Это позволяет избежать какого-либо эффекта из-за того, что все файлы одинаковы размер.

rawParse

lineReaderParse

lineReaderParseParallel

nioFilesParse

nioAsyncParse

ПОЛНАЯ RUNNABLE РЕАЛИЗАЦИЯ ВСЕХ Дела

oleglomako / Как построчно считывать файл в Java.java

import java.io.BufferedReader ;
import java.io.File ;
import java.io.FileNotFoundException ;
import java.io.FileReader ;
import java.io.IOException ;
public class ReadFileLineByLine <
// построчное считывание файла
public static void main ( String [] args ) <
try <
File file = new File ( » /Users/prologistic/file.txt » );
// создаем объект FileReader для объекта File
FileReader fr = new FileReader (file);
// создаем BufferedReader с существующего FileReader для построчного считывания
BufferedReader reader = new BufferedReader (fr);
// считаем сначала первую строку
String line = reader . readLine();
while (line != null ) <
System . out . println(line);
// считываем остальные строки в цикле
line = reader . readLine();
>
> catch ( FileNotFoundException e) <
e . printStackTrace();
> catch ( IOException e) <
e . printStackTrace();
>
>
>
  • © 2020 GitHub , Inc.
  • Terms
  • Privacy
  • Security
  • Status
  • Help

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Java работа с файлами

Каждое приложение, программа имеют возможности записи чего-либо в файл. В данном уроке я продемонстрирую как можно записать какие-то данные в файл, а потом считать их оттуда.

Какие проблемы мы будем решать в этом уроке?

Подготовительные работы

Создадим простой проект, не обязательно Maven проект, так как нам не потребуется не каких дополнительных библиотек.

После того как вы создали проект, создайте класс WorkInFile.java и напишите туда стандартную конструкцию main:

Теперь создадим класс который будет иметь методы для работы с файлами, а назовем его FileWorker.java все методы в нем которые не есть private будут статическими для того чтобы мы получали к ним доступ без экземпляра этого класса.

Как записывать в файл?

В классе FileWorker.java создадим статический метод который будет осуществлять запись в файл и назовем этот метод write(String text; String nameFile):

Обратите особое внимание на то, что после записи каких либо данных в файл мы должны его закрыть, только после этого действия данные запишутся в файл.

После чего мы получим новый файл “a.txt” со следующим содержимым:

2. Как читать файл?

Теперь в классе FileWorker создадим метод для чтения файла, также статический:

StringBuilder – в чем разница между обычным String? В том что когда вы в StringBuilder добавляете текст он не пересоздается, а String пересоздает себя.

Также если файла нет то метод выкинет Exception.

Для проверки на существование файла создадим метод, так как нам еще потребуется эта проверка в следующих методах:

Теперь проверим его:

В первом случае когда файл не существует мы получим это:

Во втором случае, мы получим содержимое файла в виде строки. (для этого закомментируйте первый случай)

3. Как обновить файл?

Как такого Update для файлов нет, но способ обновить его есть, для этого можно его перезаписать.

Давайте создадим метод update в классе FileWorker:

Тут мы считываем старый файл в StringBuilder после чего добавляем к нему новый текст и записываем опять. Обратите внимание что для этого мы используем наши методы.


В результате обновления файла:

мы получим следующее содержание файла “a.txt“:

4. Как удалить файл?

В тот же наш утилитный класс FileWorker добавим метод delete, он будет очень простым так как у объекта File уже есть метод delete():

Файлы и директории, класс File

Класс File пакета java.io используется для управления информацией о файлах и каталогах. На уровне операционной системы файлы и каталоги имеют существенные отличия, но в Java они описываются одним классом File. Каталог в Java трактуется как обычный файл, но с дополнительным свойством — списком имен файлов, который можно просмотреть с помощью метода list.

В зависимости от назначения объект File — файл или каталог, можно использовать один из конструкторов для создания объекта:

Примеры создания объектов File

Свойства и методы класса File

Для определения стандартных свойств файла в классе File имеются различные методы. Однако класс File несимметричен, т.е. методы определения свойств объекта существуют, но соответствующие функции для изменения этих свойств отсутствуют.

Функции Описание
String getName() Наименование файла или каталога.
String getParent() Наименование родительского каталога.
long length() Функция определения размера файла в байтах.
String getAbsolutePath() Функция определения абсолютного пути файла или каталога.
boolean delete() Удаления файла или каталога.
boolean exists() Проверка существования файла или каталога.
boolean isDirectory() Проверка, является ли данный объект каталогом.
boolean isFile() Проверка, является ли данный объект файлом.
long lastModified() Функция определения даты последней модификации файла.
boolean canRead() Проверка, можно ли читать данные из файла.
boolean canWrite() Проверка, можно ли записывать данные в файл.
boolean isHidden() Проверка, являются ли каталог или файл скрытыми.
String[] list() Чтение массива наименований файлов и подкаталогов.
File[] listFiles() Чтение массива файлов и подкаталогов.
boolean mkdir() Создание нового каталога.
boolean renameTo(File dest) Переименовывание файла или каталога.

В следующем примере открываем файл «d:/test/MyFile.txt» (Windows) и извлекаем его характеристики:

В консоли будет отпечатана следующая информация:

Интерфейс FileFilter

Класс File включает метод, позволяющий прочитать список только определенных файлов.

Цукерберг рекомендует:  Обучение - Покажется смешным, но...

В отличие от одноименного метода, но без параметра, данный метод отбирает только те файлы каталога, которые удовлетворяют определенному условию. Параметр filter предназначен для задания этого условия. При этом тип параметра FileFilter — это не класс, а интерфейс, который имеет всего один метод, возвращающий true, если файл удовлетворяет определенным условиям, и false в противном случае.

Метод listFiles будет вызывать метод accept для каждого файла в каталоге, и те, для которых accept вернет true, будут включены в результирующий список. Остальные будут проигнорированы.

Для использования FileFilter необходимо создать объект и определить в нем соответствующий метод accept.

Пример использования фильтра FileFilter

Чтение содержимого файла FileInputStream

Для чтения содержимого файла можно использовать класс FileInputStream, который является наследником класса InputStream и реализует все его методы. Конструктор класса FileInputStream :

Если файл не может быть открыт то генерируется исключение FileNotFoundException.

Пример считывания данных из файла и вывод содержимого в консоль:

Данные файла можно считать в массив байтов :

Класс FileInputStream предназначен прежде всего для работы с двоичными файлами. Его можно использовать для работы с текстовыми файлами, но все же для этой задачи больше подходят другие классы.

Пример использования FileInputStream для чтения файла свойств в кодировке UTF-8:

Файл свойств «data.properties» в кодировке UTF-8:

Запись в файл FileOutputStream

Класс FileOutputStream, является производным от класса OutputStream, поэтому наследует всю его функциональность.

Пример записи строки в файл:

Для создания объекта FileOutputStream используется конструктор, принимающий в качестве параметра путь к файлу для записи. Для записи строки ее сначала переводим в массив байт и с помощью метода write строка записывается в файл. Необязательно записывать весь массив байтов. Используя перегрузку метода write(), можно записать и одиночный байт:

Пример перезаписи содержимого из одного файла в другой:

Класс FileOutputStream предназначен прежде всего для записи двоичных файлов. Его можно использовать для работы с текстовыми файлами, но все же для этой задачи больше подходят другие классы.

Чтение текстового файла в Java

Кажется, есть разные способы чтения и записи данных файлов на Java.

Я хочу прочитать данные ASCII из файла. Каковы возможные пути и их различия?

ASCII — это текстовый файл, поэтому вы можете использовать Readers для чтения. Java также поддерживает чтение из двоичного файла с использованием InputStreams . Если читаемые файлы огромны, то вы можете использовать BufferedReader поверх FileReader для улучшения производительности чтения.

Прочитайте эту статью о том, как использовать Reader

Я бы также порекомендовал вам скачать и прочитать эту замечательную (но бесплатную) книгу под названием Thinking In Java

В Java 7:

В Java 8:

Мой любимый способ прочитать небольшой файл — использовать BufferedReader и StringBuilder. Это очень просто и точно (хотя и не особенно эффективно, но достаточно для большинства случаев):

Некоторые отметили, что после Java 7 вы должны использовать функции try-with-resources (то есть автоматическое закрытие):

Когда я читаю строки, подобные этому, я обычно хочу делать некоторую обработку строк на строку в любом случае, поэтому я иду на эту реализацию.

Хотя, если я хочу просто прочитать файл в String, я всегда использую Apache Commons IO с помощью метода класса IOUtils.toString(). Вы можете посмотреть источник здесь:

И даже проще с Java 7:

Самый простой способ — использовать класс Scanner в Java и объект FileReader. Простой пример:

Scanner имеет несколько методов для чтения в строках, числах и т.д. Вы можете найти дополнительную информацию об этом на странице документации Java.


Например, прочитав весь контент в String :

Также, если вам нужна конкретная кодировка, вы можете использовать это вместо FileReader :

Вот простое решение:

Здесь другой способ сделать это без использования внешних библиотек:

Мне пришлось сравнивать разные способы. Я буду комментировать мои результаты, но, короче говоря, самым быстрым способом является использование простого старого BufferedInputStream над FileInputStream. Если необходимо прочитать несколько файлов, три потока уменьшат общее время выполнения примерно до половины, но добавление большего количества потоков будет постепенно ухудшать производительность, пока оно не займет три раза дольше, чтобы выполнить двадцать потоков, чем только с одним потоком.

Предполагается, что вы должны прочитать файл и сделать что-то значимое с его содержимым. В приведенных здесь примерах читаются строки из журнала и подсчитываются те, которые содержат значения, превышающие определенный порог. Поэтому я предполагаю, что однострочный Java 8 Files.lines(Paths.get(«/path/to/file.txt»)).map(line -> line.split(«;»)) не является вариантом.

Я тестировал на Java 1.8, Windows 7 и диски SSD и HDD.

Я написал шесть разных реализаций:

rawParse: используйте BufferedInputStream через FileInputStream и затем сокращайте строки, читающие байты по байтам. Это превосходит любой другой однопоточный подход, но может быть очень неудобным для файлов, отличных от ASCII.

lineReaderParse: используйте BufferedReader поверх FileReader, читайте строки за строкой, разделяя строки, вызывая String.split(). Это примерно на 20% медленнее, чем rawParse.

lineReaderParseParallel: это то же самое, что и lineReaderParse, но использует несколько потоков. Это самый быстрый вариант во всех случаях.

nioFilesParse: используйте java.nio.files.Files.lines()

nioAsyncParse. Используйте AsynchronousFileChannel с обработчиком завершения и пулом потоков.

nioMemoryMappedParse: используйте файл с отображением памяти. Это действительно плохая идея, дающая время выполнения как минимум в три раза дольше, чем любая другая реализация.

Это среднее время для чтения 204 файлов с 4 байтами каждый на четырехъядерном i7 и SSD-диске. Файлы создаются «на лету», чтобы избежать кэширования диска.

Я обнаружил разницу, меньшую, чем я ожидал, между запуском на SSD или жестком диске SSD примерно на 15% быстрее. Это может быть связано с тем, что файлы создаются на необразованном жестком диске, и они считываются последовательно, поэтому вращающийся диск может работать как SSD.

Я был удивлен низкой производительностью реализации nioAsyncParse. Либо я реализовал что-то не так, либо многопоточную реализацию с использованием NIO, а обработчик завершения выполняет то же (или даже хуже), чем однопоточную реализацию с API java.io. Кроме того, асинхронный синтаксический разбор с CompletionHandler намного длиннее в строках кода и сложнее реализовать правильно, чем прямая реализация старых потоков.

Теперь шесть реализаций, за которыми следует класс, содержащий их все, плюс параметризованный метод main(), который позволяет воспроизводить количество файлов, размер файла и степень concurrency. Обратите внимание, что размер файлов варьируется плюс минус 20%. Это делается для того, чтобы избежать какого-либо эффекта из-за того, что все файлы имеют точно такой же размер.

rawParse

lineReaderParse

lineReaderParseParallel

nioFilesParse

nioAsyncParse

ПОЛНОЕ ВЗАИМОДЕЙСТВИЕ ВСЕХ СЛУЧАЯХ

В Java SE создание, сохранение и чтение чисел из файла

В Visual C++ создание, сохранение и чтение чисел из файла.

В ME аналог FileDialog отсутствует

5) Чтение запись файлов в Visual C++ и Java SE

Цукерберг рекомендует:  Вложенные и внутренние классы

В проекте создаем класс (проект добавить класс) filework.

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)

Руководство по Java Core. Файлы и работа с ними.

При разработке программного обеспечения мы сталкиваемся с приложениями, в которых необходимо передавать или принимать файлы. Практически все классы, необходимые для этой задачи находтся в паке java.io. В работе с файлами испольщуется такое понятие, как поток (stream), который принимает входной файл и перемещает его в место назначения.

В языке программирования Java поддерживаются потоки для различных типов данных. Давайте рассмотрим их.

Потоки (Streams)

Мы можем сказать ,что поток – это последовательность данных. Существует два вида потоков:

  • Входящий поток
    В Java для чтения файлов используется InputStream .
  • Исходящий поток
    В Java используется OutputStream для записи данных в файл.

Схематично это можно изобразить так:

В Java крайне хорошо поддерживается работа с файлами. Рассмотрим различные примеры работы с файлами.

Байты

Чаще всего, для работы с байтами используются FileInputStream и FileOutputStream. Давайте рассмотрим как это работает на примере простого приложения.

Создайте в корневой папке проекта папку resources. В это йпапке создайте два файла: inputFile.txt и outputFile.txt.


Файл inputFile.txt:

Оставьте файл outputFile.txt пустым.

В результате работы программы мы получим следуюющий результат:

После запуска приложения смотрим файл outputFile.txt

Копирование успешно выполнено.

Символы

Байтовые потоки в Java используются для ввода и вывода 8-битных элементов. Символьные потоки используюстся для работы с 16-битной кодировкой Unicode.

Для работы с символами, чаще всего используют FileReader и FileWriter. FileReader читает одновременно по 2 байта, а FileWriter, в своб очередь, записывает по 2 байта за раз.

Для понимания того, как жто работает на практике рассмотирм пример простого приложения.

Создайте в корневой папке проекта папку resources. В это йпапке создайте два файла: inputFile.txt и outputFile.txt.

Файл inputFile.txt:

Оставьте файл outputFile.txt пустым.

В результате работы программы мы получим следуюющий результат:

После запуска приложения смотрим файл outputFile.txt

Копирование успешно выполнено.

Стандартные потоки

Как и во многих других языках программирования, в Java обеспечивается ввод информации в программу во время её выполнения. Для этих целей в Java существует три стандартных потока:

  • Стандратный ввод
    Используется для ввода пользователем информаци (обычно – клавиатура) и представлен элементом System.in.
  • Стандартный вывод
    Используется для вывода данных пользователю (обычно – экран монитора) и представлен элементом System.out.
  • Стандартная ошибка
    Используется для вывода ошибок произошедших при работе программы (обычно – на экран монитора) и представлен элементом System.err.

Для понимания того, как это работает на практике, рассмотрим пример простого приложения.

Запускаем программу и начинаем вводить символы. Если нам необходимо выйти – вводим символ ‘Q’.

В результате работы рпограммы мы получим, примерно, следующий результат:

Чтение и запись файлов

Теперь рассмотрим чтение и запись файлов более подробно.

Рассмотренные ранее InputStream и OutputSream используются для чтения и записи данных из файлов записи их в файлы.

Давайте посмотрим а иерархию этих двух классов:

Далее мы рассмотрим FileInputStream и FileOutputStream.

FileInputStream

Этот элемент используется для чтения данных из файлов.

FileInputStream имеет следующие методы:

  • public void close() throws IOException
    Этот метод закрывает поток и освобождает любый ресурсы системы, которые связаны с этим файлом. В случае ошибки “бросает” IOException.
  • public void finalize() throws IOException
    Этот метод “чистит” соединение с файлом. И проверяет, что метод close() был вызван. В случае ошибки “бросает” IOException.
  • public int read(int r) throws IOException
    Этот метод читает определённые байты данных из входящего файла .Возвращает int. Если весь файл прочитан – будет возвращено занчение -1. В случае ошибки “бросает” IOException.
  • public int read(byte[] r) throws IOException
    Этот метод читает количество байтов, равное длине массива (r.length). Если весь файл прочитан – будет возвращено занчение -1. В случае ошибки “бросает” IOException.
  • public int available() throws IOException
    Этот метода возвращает количество байтов, которое может быть прочитано из заданного входного файла. Возвращаетint.

Рассмотрим два ключевых входных потока:

FileOutputStream

Этот поток используется для создания файлов и записи в них данных. Если файл, в который мы хотим записать данные ещё не существует, то FileOutputStream создаст его автоматически.

Исходящий поток имеет следующие методы:

  • public void close() throws IOException
    Этот метод закрывает исходящий поток и освобождает все ресурсы системы, который связаны с ним. В случае ошибки “бросает” IOException.
  • protected void finalize() throws IOException
    Этот метод “чистит” соединение с файлом. Проверяет был ли вызван метод close(). В случае ошибки “бросает” IOException.
  • public void write(int w) throws IOException
    Этот метод записывает опредлённые байты в указанный файл. В случае ошибки “бросает” IOException.
  • public void write(byte[] w) throws IOException
    Этот метод записывает количество байтов, равное длине заданного массива (w.length) в указанный файл. В случае ошибки “бросает” IOException.

Рассмотрим два ключевых исходящих потока:

Для понимания того, как это работает на практике, рассмотрим пример простого приложения.

В результате работы программы мы получим, следующий результат:

Навигация файлов и I/O

Рассмотрим другие ключевые классы, которые мы модем использовать при работе с файлами и I/O:

Директории в Java

Директория (грубо говоря – папка) – это экземпляр класса File, который содержит список других файлов.

Для создания директорий существует два метода, которые мы можем использовать:

  • mkdir()
    Этот метод создаёт директорию и возвращает логическое значение true, если создание прошло успешно, и false – если нет. Ошибка может быть вызвана либо тем, что данная директория уже существует, либо тем, что вводнй путь директории ещё не создан.
  • mkdirs()
    Этот метод метод создаёт и саму директорию и путь (родительские папки) к этой директории.

Для понимания того, как это работает на практике, рассмотрим пример простого приложения.

В результате работы программы будет создана директория (папка) с названием testDir по указанному пути. Вы олжны вставить свой желаемый путь создаваемой директории.

Кроме того, мы также можем получить список файлов и директорий, которые находятся в интересующей нас папке с помощью метода list().

Рассмотрим пример простого приложения, в которм мы попробуем получить список всех файлов и директорий в корневой папке проекта.

В результате работы программы мы получим, примерно, следующий результат:

В этом уроке мы изучили основы работы с файлами в языке программирования Java. Мы рассмотрели ключевые классы и ознакомились с примерами простых приложений, которые демонстрируют их работу.

В следующем уроке мы изучим такую важную составляющую языка программирования Java, как исключения (Exceptions).

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих