컴퓨터 프로그래밍-파일 I / O

컴퓨터 파일

컴퓨터 파일은 일반 텍스트, 이미지 데이터 또는 기타 콘텐츠와 같은 디지털 형식으로 데이터를 저장하는 데 사용됩니다. 컴퓨터 파일은 다른 디렉토리 내에 구성 될 수 있습니다. 파일은 디지털 데이터를 보관하는 데 사용되는 반면 디렉토리는 파일을 보관하는 데 사용됩니다.

컴퓨터 파일은 종이 문서의 디지털 대응 물로 간주 할 수 있습니다. 프로그래밍하는 동안 다른 확장자를 가진 텍스트 파일에 소스 코드를 보관합니다. 예를 들어 C 프로그래밍 파일은 확장자로 끝납니다..c, Java 프로그래밍 파일 .java, Python 파일 .py.

파일 입력 / 출력

일반적으로 메모장, MS Word, MS Excel, MS Powerpoint 등과 같은 텍스트 편집기를 사용하여 파일을 생성합니다. 그러나 많은 경우 컴퓨터 프로그램을 사용하여 파일을 생성해야합니다. 컴퓨터 프로그램을 사용하여 기존 파일을 수정할 수 있습니다.

파일 입력은 파일에 기록 된 데이터를 의미하고 파일 출력은 파일에서 읽은 데이터를 의미합니다. 실제로 입력 및 출력 용어는 화면 입력 및 출력과 더 관련이 있습니다. 화면에 결과를 표시 할 때 출력이라고합니다. 마찬가지로 명령 프롬프트에서 프로그램에 입력을 제공하면 입력이라고합니다.

지금은 파일에 쓰는 것이 파일 입력이고 파일에서 무언가를 읽는 것이 파일 출력이라는 것을 기억하면 충분합니다.

파일 작동 모드

컴퓨터 프로그램을 사용하여 파일 작업을 시작하기 전에 새 파일이 없으면 새로 만들거나 이미 존재하는 파일을 열어야합니다. 두 경우 모두 다음 모드에서 파일을 열 수 있습니다.

  • Read-Only Mode− 기존 파일을 읽기만하고 파일에 더 이상 내용을 쓰지 않으려면 파일을 읽기 전용 모드로 엽니 다. 거의 모든 프로그래밍 언어는 읽기 전용 모드로 파일을 여는 구문을 제공합니다.

  • Write-Only Mode− 기존 파일이나 새로 생성 된 파일에 쓰려고하지만 해당 파일에서 작성된 내용을 읽지 않으려면 쓰기 전용 모드로 파일을 엽니 다. 모든 프로그래밍 언어는 쓰기 전용 모드로 파일을 여는 구문을 제공합니다.

  • Read & Write Mode − 같은 파일을 읽고 쓰려는 경우 읽기 및 쓰기 모드로 파일을 엽니 다.

  • Append Mode− 쓰기 위해 파일을 열면 파일의 처음부터 쓰기를 시작할 수 있습니다. 그러나 기존 콘텐츠가있는 경우 덮어 씁니다. 기존 콘텐츠를 덮어 쓰지 않으려는 경우 추가 모드에서 파일을 엽니 다. 추가 모드는 궁극적으로 쓰기 모드로, 파일 끝에 콘텐츠를 추가 할 수 있습니다. 거의 모든 프로그래밍 언어는 추가 모드에서 파일을 여는 구문을 제공합니다.

다음 섹션에서는 새 파일을 여는 방법, 파일에 쓰는 방법, 나중에 동일한 파일에 더 많은 콘텐츠를 읽고 추가하는 방법을 배웁니다.

파일 열기

당신은 사용할 수 있습니다 fopen()새 파일을 만들거나 기존 파일을 여는 기능입니다. 이 호출은 유형의 객체를 초기화합니다.FILE, 스트림을 제어하는 ​​데 필요한 모든 정보를 포함합니다. 다음은 프로토 타입, 즉이 함수 호출의 서명입니다.

FILE *fopen( const char * filename, const char * mode );

여기, filename 파일 이름 및 액세스에 사용할 문자열 리터럴입니다. mode 다음 값 중 하나를 가질 수 있습니다.

Sr. 아니요 모드 및 설명
1

r

읽기 목적으로 기존 텍스트 파일을 엽니 다.

2

w

쓰기 위해 텍스트 파일을 엽니 다. 존재하지 않으면 새 파일이 생성됩니다. 여기에서 프로그램은 파일의 처음부터 내용을 쓰기 시작합니다.

a

추가 모드에서 쓰기 위해 텍스트 파일을 엽니 다. 존재하지 않으면 새 파일이 생성됩니다. 여기에서 프로그램은 기존 파일 내용에 내용을 추가하기 시작합니다.

4

r+

읽고 쓰기 위해 텍스트 파일을 엽니 다.

5

w+

읽기와 쓰기를 위해 텍스트 파일을 엽니 다. 먼저 파일이 있으면 길이를 0으로 자릅니다. 그렇지 않으면 파일이 없으면 생성합니다.

6

a+

읽기와 쓰기를 위해 텍스트 파일을 엽니 다. 파일이 존재하지 않으면 생성합니다. 읽기는 처음부터 시작되지만 쓰기는 추가 만 가능합니다.

파일 닫기

파일을 닫으려면 fclose( )함수. 이 함수의 프로토 타입은 다음과 같습니다.

int fclose( FILE *fp );

그만큼 fclose( ) 함수가 성공하면 0을 반환하거나 EOF, 특수 문자 (파일 닫기에 오류가있는 경우). 이 함수는 실제로 버퍼에 보류중인 모든 데이터를 파일로 플러시하고 파일을 닫고 파일에 사용 된 모든 메모리를 해제합니다. EOF는 헤더 파일에 정의 된 상수입니다.stdio.h.

파일 문자를 문자 단위로 또는 고정 길이 문자열 형태로 읽고 쓰기 위해 C 표준 라이브러리에서 제공하는 다양한 기능이 있습니다. 다음 섹션에서 몇 가지를 살펴 보겠습니다.

파일 작성

다음은 스트림에 개별 문자를 쓰는 가장 간단한 함수입니다.

int fputc( int c, FILE *fp );

함수 fputc() 인수 c의 문자 값을 참조하는 출력 스트림에 기록합니다. fp. 성공시 쓰여진 문자를 반환합니다. 그렇지 않으면EOF오류가있는 경우. 다음 함수를 사용하여 null로 끝나는 문자열을 스트림에 쓸 수 있습니다.

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

함수 fputs() 문자열을 씁니다. sfp에서 참조하는 파일로. 성공하면 음수가 아닌 값을 반환합니다. 그렇지 않으면EOF오류가 발생하면 반환됩니다. 당신은 또한 기능을 사용할 수 있습니다int fprintf(FILE *fp,const char *format, ...)파일에 문자열을 씁니다. 다음 예를보십시오-

#include <stdio.h>

int main() {
   FILE *fp;

   fp = fopen("/tmp/test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}

위 코드를 컴파일하여 실행하면 새로운 파일이 생성됩니다. test.txt/tmp두 개의 다른 기능을 사용하여 두 줄을 씁니다. 다음 섹션에서이 파일을 읽어 보겠습니다.

파일 읽기

다음은 문자별로 텍스트 파일을 읽는 가장 간단한 함수입니다.

int fgetc( FILE * fp );

그만큼 fgetc() 함수는에서 참조하는 입력 파일에서 문자를 읽습니다. fp. 반환 값은 읽은 문자입니다. 또는 오류가 발생하면EOF. 다음 함수는 스트림에서 문자열을 읽을 수 있습니다-

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

함수 fgets() 에서 참조하는 입력 스트림에서 최대 n-1 개의 문자를 읽습니다. fp. 읽은 문자열을 버퍼에 복사합니다.buf, 추가 null 문자열을 종료하는 문자입니다.

이 함수가 최대 문자 수를 읽기 전에 개행 문자 '\ n'또는 EOF를 발견하면 개행 문자를 포함하여 해당 지점까지 읽은 문자 만 리턴합니다. 당신은 또한 사용할 수 있습니다int fscanf(FILE *fp, const char *format, ...) 파일에서 문자열을 읽지 만 첫 번째 공백 문자를 만나면 읽기가 중지됩니다.

#include <stdio.h>

main() {

   FILE *fp;
   char buff[255];

   fp = fopen("/tmp/test.txt", "r");
   fscanf(fp, "%s", buff);
   printf("1 : %s\n", buff );

   fgets(buff, 255, (FILE*)fp);
   printf("2: %s\n", buff );
   
   fgets(buff, 255, (FILE*)fp);
   printf("3: %s\n", buff );
   fclose(fp);
}

위의 코드가 컴파일되고 실행되면 이전 섹션에서 생성 된 파일을 읽고 다음 결과를 생성합니다.

1 : This
2 : is testing for fprintf...

3 : This is testing for fputs...

여기서 무슨 일이 일어 났는지 분석해 봅시다. 첫째,fscanf() 메소드 읽기 This그 후 공간이 생겼기 때문입니다. 두 번째 호출은fgets(), 줄 끝까지 남은 줄을 읽습니다. 마지막으로 마지막 호출fgets() 두 번째 줄을 완전히 읽습니다.

Java의 파일 I / O

Java는 파일 I / O를 처리하기 위해 더욱 풍부한 기능 세트를 제공합니다. 이 주제에 대한 자세한 내용은 Java 자습서를 확인하는 것이 좋습니다.

여기서는 위에서 설명한 C 프로그램과 동일한 간단한 Java 프로그램을 볼 수 있습니다. 이 프로그램은 텍스트 파일을 열고 몇 줄의 텍스트를 작성하고 파일을 닫습니다. 마지막으로 동일한 파일이 열리고 이미 생성 된 파일에서 읽습니다. 다음 프로그램을 실행하여 출력을 볼 수 있습니다.

import java.io.*;

public class DemoJava {
   public static void main(String []args) throws IOException {
      File file = new File("/tmp/java.txt");
      
      // Create a File
      file.createNewFile();
      
      //  Creates a FileWriter Object using file object
      FileWriter writer = new FileWriter(file); 
      
      // Writes the content to the file
      writer.write("This is testing for Java write...\n");
      writer.write("This is second line...\n");
      
      // Flush the memory and close the file
      writer.flush();
      writer.close();
      
      // Creates a FileReader Object
      FileReader reader = new FileReader(file); 
      char [] a = new char[100];
      
      // Read file content in the array
      reader.read(a);
      System.out.println( a );
      
      // Close the file
      reader.close();
   }
}

위의 프로그램이 실행되면 다음과 같은 결과가 나옵니다.

This is testing for Java write...
This is second line...

Python의 파일 I / O

다음 프로그램은 새 파일을 열고 일부 내용을 기록한 다음 마지막으로 동일한 파일을 읽는 동일한 기능을 보여줍니다.

# Create a new file
fo = open("/tmp/python.txt", "w")

# Writes the content to the file
fo.write( "This is testing for Python write...\n");
fo.write( "This is second line...\n");

# Close the file
fo.close()

# Open existing file
fo = open("/tmp/python.txt", "r")

# Read file content in a variable
str = fo.read(100);
print str

# Close opened file
fo.close()

위의 코드가 실행되면 다음과 같은 결과가 생성됩니다.

This is testing for Python write...
This is second line...