Javaのスクリプト

以下は指定された仕様に基づいて作成されたJavaプログラムのサンプルコードです。Java 1.8で動作することを前提としています。

import java.io.*;
import java.util.*;

public class CsvFileProcessor {
    public static void main(String[] args) {
        // コマンドライン引数からCSVファイルのパスを取得
        if (args.length != 1) {
            System.out.println("使用法: java CsvFileProcessor <CSVファイルパス>");
            return;
        }

        String inputFilePath = args[0];
        String outputFilePath = new File(inputFilePath).getParent() + File.separator + "output.csv";

        try (
            BufferedReader reader = new BufferedReader(new FileReader(inputFilePath));
            BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath))
        ) {
            String line;

            // 1行ずつ読み込み処理
            while ((line = reader.readLine()) != null) {
                // CSVファイルの項目を分割
                List<String> record = new ArrayList<>(Arrays.asList(line.split(",")));

                // 5項目目(インデックス4)が存在する場合に編集
                if (record.size() > 4) {
                    record.set(4, "12345678");
                }

                // 編集後のレコードを出力用ファイルに書き込み
                writer.write(String.join(",", record));
                writer.newLine();
            }

            System.out.println("編集されたCSVファイルを以下に出力しました: " + outputFilePath);

        } catch (FileNotFoundException e) {
            System.out.println("指定されたCSVファイルが見つかりません: " + inputFilePath);
        } catch (IOException e) {
            System.out.println("ファイルの読み書き中にエラーが発生しました: " + e.getMessage());
        }
    }
}

プログラムの説明

  1. CSVファイルの読み込み:
  • BufferedReaderを使用して1行ずつCSVファイルを読み込みます。
  • レコードは行ごとにsplit(",")で分割して、リスト形式で管理します。
  1. エラー処理:
  • List<String>を使用してレコードを管理することで、項目数が異なる場合でも安全に処理を行います。
  1. 5項目目の編集:
  • record.set(4, "12345678"); で、インデックス4(5項目目)の値を指定の値に編集します。
  • 項目数が4以下でも問題が発生しないロジックになっています。
  1. 編集後のCSVファイルの出力:
  • BufferedWriterを使用して、編集された内容を新しいCSVファイルに書き込みます。
  • 出力先のファイル名はoutput.csvとし、入力ファイルと同じフォルダに保存します。

注意点

  1. CSVファイルのフォーマット:
  • このコードでは、項目の区切り文字を","として扱っています。特殊な区切り文字が使用されている場合は、その対応が必要です。
  1. エラー処理:
  • ファイルが存在しない場合や読み書き中のエラーを処理しています。
  1. Java 1.8対応:
  • Java 1.8で動作する標準ライブラリのみを使用しています。

このコードを保存してコンパイルするには、例えばファイル名をCsvFileProcessor.javaとして保存してください。その後、コンパイルして以下のように実行します:

javac CsvFileProcessor.java
java CsvFileProcessor path/to/input.csv

これにより、編集後のCSVファイルがoutput.csvとして保存されます。

コメント

タイトルとURLをコピーしました