同調実験室 - ARGIUS.net

TOP PAGE INDEX Number / 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

07:ファイル(1) 入力

機能

  1. 下記の内容のテキストファイル(data.txt)を読み込み可能な状態でオープンする
  2. ファイルを1行ずつよみこみ、ファイルの終端(EOF)まですべて出力する
  3. ファイルをクローズする
  4. ファイルオープンに失敗した場合は、"Can't open file!"と表示して終了する

テキストファイル(data.txt)

abc123
def456
789aba

実行結果

$ ./test
abc123
def456
789aba

$

ソース

C

#include <stdio.h>

int main()
{
  FILE *fp;      /* ファイルポインタ */
  char buf[256]; /* 文字列バッファ */
  
  /* ファイルを読み込み専用でオープン */
  if ((fp = fopen("data.txt","r")) != NULL) {
    /* EOFまでループ */
    while (!feof(fp)) {
      /* 1行読み込みトライ */
      if (fgets(buf, sizeof(buf), fp) == NULL) {
        /* 失敗orデータなしならループを抜ける */
        break;
      } else {
        /* 成功したら出力 */
        printf("%s",buf);
      }
    }
    /* ファイルをクローズ */
    fclose(fp);
  } else {
    /* ファイルオープンに失敗したときの処理 */
    printf("Can't open file!");
    return 1;
  }
  
  return 0;
}

C++

#include <iostream>
#include <string>
#include <fstream>

int main()
{
  std::ifstream ifs;  // ファイル入力オブジェクト
  
  // ファイルをオープンする
  ifs.open("data.txt");
  
  // ファイルオープンに失敗したとき
  if (ifs.fail()) {
    std::cout << "Can't open file!" << std::endl;
    return 1;
  }
  
  // EOFまでループ
  while (!ifs.eof()) {
    // 文字列バッファ
    std::string buf;
    // 1行読み込み
    ifs >> buf;
    // 1行出力
    std::cout << buf << std::endl;
  }
  
  // ファイルをクローズ
  ifs.close();
  
  return 0;
}

Java

import java.io.*;

class Main {
    
    public static void main(String[] args) {
        
        try {
            
            String s = "";
            BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
            
            // ループ
            while (true) {
                // 1行読み込み
                s = reader.readLine();
                // 読み込み結果がnullならEOF
                if (s == null) {
                    break;
                }
                // 1行出力
                System.out.println(s);
            }
            
            // ファイルをクローズ
            reader.close();
            
        } catch (IOException e) {
            
            // ファイルオープンに失敗したとき
            // ....とは限らない
            e.printStackTrace();
            
        }
        
    }
    
}

Perl

# ファイルを読み込みモードでオープンする
open IN, "< data.txt"
  or die "Can't open file!"; # ファイルオープンに失敗したとき

# 1行ずつ読み込む
foreach (<IN>) {
    #1行出力
    print;
}

# ファイルをクローズ
close IN;

Ruby

begin
  # ファイルを読み込みモードでオープンする
  f = open("data.txt", "r")
rescue
  # ファイルオープンに失敗したとき
  puts "Can't open file!"
  exit
end

# 1行ずつ読み込んで出力
while s = f.gets
  puts s
end

# ファイルをクローズ
f.close

最終更新日 : 2004.08.23

TOP PAGEINDEX Number / 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18