Файлы в программировании



Объявления

Компьютерные файлы

Компьютерный файл используется для хранения данных в цифровом формате. Таких как обычный текст. Графические данные или любое другое содержимое. Компьютерные файлы могут быть организованы в различных каталогах. Файлы используются для хранения цифровых данных. В то время как каталоги используются для хранения файлов. Компьютерные файлы можно рассматривать как цифровой аналог бумажных документов. Во время программирования вы храните исходный код в текстовых файлах с различными расширениями, например. Файлы программирования C заканчиваются расширением .c, файлы программирования Java-расширением .java, а файлы Python-расширением .py.

Файловый Ввод/Вывод

Обычно вы создаете файлы с помощью текстовых редакторов. Таких как notepad, MS Word. MS Excel или MS Powerpoint и т. Д. Однако часто нам приходится создавать файлы и с помощью компьютерных программ. Мы можем изменить существующий файл с помощью компьютерной программы.

Файловый ввод означает данные. Которые записываются в файл. А файловый вывод-данные. Которые считываются из файла. На самом деле термины ввода и вывода больше связаны с вводом и выводом экрана. Когда мы показываем результат на экране. Он называется выводом. Аналогично, если мы вводим некоторую информацию в нашу программу из командной строки. То она называется вводом.

На данный момент достаточно помнить. Что запись в файл-это ввод файла. А чтение чего-либо из файла-это вывод файла.

Режимы работы с Файлами

Прежде чем мы начнем работать с любым файлом с помощью компьютерной программы. Нам нужно либо создать новый файл. Если он не существует. Либо открыть уже существующий файл. В любом случае мы можем открыть файл в следующих режимах:

  • Режим только для чтения-Если вы собираетесь просто прочитать существующий файл и не хотите записывать в него дальнейшее содержимое. То вы откроете файл в режиме только для чтения. Почти все языки программирования предоставляют синтаксис для открытия файлов в режиме только для чтения.

  • Режим только записи − Если вы собираетесь записывать данные либо в существующий файл. Либо во вновь созданный файл. Но не хотите читать какое-либо записанное содержимое из этого файла. То вы откроете файл в режиме только записи. Все языки программирования предоставляют синтаксис для открытия файлов в режиме только записи.

  • Режим чтения и записи − Если вы собираетесь читать и записывать в один и тот же файл. То вы откроете файл в режиме чтения и записи.

  • Режим добавления − Когда вы открываете файл для записи. Он позволяет начать запись с самого начала файла; однако он будет перезаписывать существующее содержимое. Если таковое имеется. Предположим. Мы не хотим перезаписывать какой-либо существующий контент. А затем открываем файл в режиме добавления. Режим добавления-это. В конечном счете. Режим записи. Который позволяет добавлять содержимое в конце файла. Почти все языки программирования предоставляют синтаксис для открытия файлов в режиме добавления.

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

Открытие файлов

Вы можете использовать функцию fopen() для создания нового файла или открытия существующего. Этот вызов инициализирует объект типа FILE, который содержит всю информацию. Необходимую для управления потоком. Вот прототип. То есть сигнатура этого вызова функции −

FILE *fopen( const char * filename. Const char * mode ); 

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

Sr.No Режим и Описание
1

Р

Открывает существующий текстовый файл для чтения.

2

w

Открывает текстовый файл для записи. Если он не существует. То создается новый файл. Здесь ваша программа начнет писать содержимое с самого начала файла.

3

один

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

4

r+

Открывает текстовый файл для чтения и записи.

5

w+

Открывает текстовый файл как для чтения. Так и для записи. Сначала он усекает файл до нулевой длины. Если он существует; в противном случае создает файл. Если он не существует.

6

а+

Открывает текстовый файл как для чтения. Так и для записи. Он создает файл. Если он не существует. Чтение начнется с самого начала. Но запись может быть только дополнена.

Закрытие файла

Чтобы закрыть файл. Используйте функцию fclose ( ). Прототипом этой функции является −

 int fclose( FILE *fp);

Функция fclose( ) возвращает ноль при успешном завершении или специальный символ EOF. Если произошла ошибка при закрытии файла. Эта функция фактически сбрасывает все данные. Все еще ожидающие в буфере, в файл. Закрывает файл и освобождает любую память. Используемую для файла. EOF-это константа. Определенная в заголовочном файле stdio.h.

Существуют различные функции. Предоставляемые стандартной библиотекой C для чтения и записи файла символ за символом или в виде строки фиксированной длины. Давайте рассмотрим некоторые из них в следующем разделе.

Написание файла

Ниже приведена самая простая функция для записи отдельных символов в поток −

int fputc( int c, FILE *fp);

Функция fputc() записывает символьное значение аргумента c в выходной поток. На который ссылается fp. Он возвращает записанный символ. Записанный при успешном выполнении. В противном случае EOF, если есть ошибка. Для записи строки с нулевым завершением в поток можно использовать следующие функции:

int fputs( const char *s, FILE *fp);

Функция fputs() записывает строку s в файл. На который ссылается fp. Он возвращает неотрицательное значение при успешном выполнении. В противном случае EOF возвращается в случае любой ошибки. Вы также можете использовать функцию int fprintf(FILE *fp,const char *format. …) для записи строки в файл. Попробуйте следующий пример −

#include  int main() { ФАЙЛ *fp; fp = fopen(, ); fprintf(fp, ); fputs(, fp); fclose(fp); }

Когда приведенный выше код компилируется и выполняется. Он создает новый файл test.txt в каталоге /tmp и записывает две строки. Используя две разные функции. Давайте прочтем этот файл в следующем разделе.

Чтение файла

Ниже приведена простейшая функция для чтения текстового файла символ за символом −

int fgetc( ФАЙЛ * fp ); 

Функция fgetc() считывает символ из входного файла. На который ссылается fp. Возвращаемое значение-это прочитанный символ; или в случае какой-либо ошибки он возвращает EOF. Следующая функция позволяет считывать строку из потока −

char *fgets( char *buf, int n. FILE *fp ); 

Функция fgets() считывает до n — 1 символов из входного потока. На который ссылается fp. Он копирует прочитанную строку в буфер buf, добавляя нулевой символ для завершения строки.

Если эта функция встречает символ новой строки ‘\n’ или EOF до того. Как они прочитали максимальное количество символов. То она возвращает только символы. Прочитанные до этого момента. Включая символ новой строки. Вы также можете использовать int fscanf(FILE *fp. Const char *format. …) для чтения строк из файла. Но он перестает читать после встречи с первым пробелом.

#include  main() { FILE *fp; char buff[255]; fp = fopen(, ); fscanf(fp, , buff); printf(, buff ); fgets(buff, 255, (FILE*)fp); printf(, buff ); fgets(buff, 255, (FILE*)fp); printf(, buff ); fclose(fp); }

Когда приведенный выше код компилируется и выполняется. Он читает файл. Созданный в предыдущем разделе. И выдает следующий результат −

1 : Это 2 : тестирование для fprintf... 3 : Это тестирование для fputs... 

Давайте проанализируем. Что здесь произошло. Сначала метод fscanf() читает это, потому что после этого он столкнулся с пробелом. Второй вызов для fgets(), который читает оставшуюся строку. Пока не встретится с концом строки. Наконец, последний вызов fgets() полностью считывает вторую строку.

Файловый ввод-вывод в Java

Java предоставляет еще более богатый набор функций для обработки файлового ввода-вывода. Для получения дополнительной информации по этой теме мы предлагаем вам ознакомиться с нашими учебными пособиями по Java.

Здесь мы увидим простую программу на Java. Которая эквивалентна программе на языке Си. Описанной выше. Эта программа откроет текстовый файл. Запишет в него несколько строк текста и закроет файл. Наконец, тот же файл открывается. А затем считывается из уже созданного файла. Вы можете попробовать выполнить следующую программу. Чтобы увидеть результат −

import java.io.*; public class DemoJava { public static void main(String []args) throws IOException { File file = new File(); // Создать файл file.createNewFile(); // Создает объект FileWriter с помощью file object FileWriter writer = new FileWriter(file); // Записывает содержимое в файл writer.write(); writer.write(); // Очистите память и закройте файл writer.flush(); writer.close(); // Создает объект FileReader FileReader reader = new FileReader(file); char [] a = new char[100]; // Чтение содержимого файла в массиве reader.read(a); System.out.println( a ); // Закройте файл reader.close(); } }

Когда вышеприведенная программа выполняется. Она дает следующий результат:

Это тестирование для Java write... Это вторая линия... 

Файловый ввод-вывод в Python

Следующая программа показывает ту же функциональность. Чтобы открыть новый файл. Записать в него некоторое содержимое и, наконец. Прочитать тот же файл −

# Создать новый файл fo = open(, ) # Записывает содержимое в файл fo.write( ); fo.write( ); # Закрыть файл fo.close() # Открыть существующий файл fo = open(, ) # Чтение содержимого файла в переменной str = fo.read(100); печать str # Закрыть открытый файл fo.close()

Когда приведенный выше код выполняется. Он дает следующий результат −

Это тестирование для Python write... Это вторая линия... 

Объявления