見出し画像

【有用なJavaアプリ】テキストファイルのタイトルと内容をcsvファイルへ!


こんにちは、自ら作った有用・簡単なJavaアプリを共有します!

パソコンの画面にあるフォルダの中でテキストファイルがあったら、このアプリケーションをつかってみてください!

1.ファイルのタイトル
2.ファイルの内容(スキップしたい行の文字列入力してください)


package org.example;

import java.io.*;
import java.nio.file.*;
import java.util.*;
import java.util.stream.Collectors;

public class CopyFilesToCSV {
    public static void main(String[] args) {

        // ファイルパスと保存パスの設定
        String desktopPath = System.getProperty("user.home") + "/Desktop";
        String sourceFolderPath = desktopPath + "/csvファイルの経路";
        String csvFilePath = desktopPath + "/output.csv";

        try {
            // CSVファイルの生成とファイルの書き込みを設定
            FileOutputStream fileOutputStream = new FileOutputStream(csvFilePath);
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
            BufferedWriter csvWriter = new BufferedWriter(outputStreamWriter);
            csvWriter.append("Title,Contt\n");

            // フォルダ内のファイル一覧を取得
            Path sourceFolder = Paths.get(sourceFolderPath);
            List<Path> files = Files.walk(sourceFolder)
                    .filter(Files::isRegularFile)
                    .collect(Collectors.toList());

            // ファイル処理
            for (Path filePath : files) {
                // すべての行を読み込んで lines に格納
                List<String> lines = Files.readAllLines(filePath);

                // ファイル名から拡張子を除いた部分を抽出して title に設定
                String fileName = filePath.getFileName().toString();
                String title = fileName.substring(0, fileName.lastIndexOf(".txt"));

                // 内容の抽出フラグと内容の変数の初期化
                boolean extractContent = false;
                StringBuilder content = new StringBuilder();

                for (String line : lines) {

                    // "文字列1" 以降から内容の抽出を開始
                    if (line.startsWith("文字列1")) {
                        extractContent = true;
                        continue;
                    }

                    // "文字列2", "文字列3", "文字列4" を含む行はスキップ
                    if (line.startsWith("文字列2") || line.contains("文字列3") || line.contains("文字列4")) {
                        continue;
                    }

                    // 改行を追加しながら StringBuilder に行を追加
                    if (extractContent) {
                        content.append(line).append("\n");
                    }
                }

                // 各ファイルの内容をダブルクォートで囲んで1行に追加
                // ダブルクォート内にダブルクォートが含まれている場合にも対応して処理
                csvWriter.append('"' + title + '"' + ",\"" + content.toString().trim().replace("\"", "\"\"") + "\"\n");

            }
            // リソースをクローズ
            csvWriter.flush();
            csvWriter.close();

            System.out.println("テキストファイルの内容をCSVファイルに保存しました。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}




みんなの時間がせつやくするように!

生計形エンジニア
ソンさん

この記事が気に入ったらサポートをしてみませんか?