• 締切済み

多数ファイルの比較

java初心者の者です。ちょっとしたことで、仕事でjavaを使ってファイル(txt)から単語を抜き出して、他のファイルの単語と比較するという作業をやりたいと思っています。ファイルの中身は行ごとにわかれており、その行に単語がスペースをあけてならべられています。そして、ファイルと他のファイルの単語を行ごとに、総当りで比較しなければなりません。そしてファイルとファイルの近似値をだし、また違うファイルと比較、という風に比較していきます。しかもファイルは100以上あります。このような場合、javaではどうゆう風に比較するが一番効率がいいのでしょか? なんせ、勉強不足で配列とlistで比較する方法くらいしか思いつきません。なにとぞ、ご教授おねがいします。 file1.txt--- 単語1 単語2 単語3・・・ 単語5 単語4  単語6 単語7 単語8 ・ ・ ・

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • tanida
  • ベストアンサー率0% (0/2)
回答No.1

「ファイルとファイルの近似値をだし、」 → これであると結局どのような結果を得たいのかがわからないような気がします。。 100以上あるファイルを比較して、同一の単語を持つ列をすべて抜き出すのか?、すべての単語を抜き出すのか?、ひとつしかない単語を抜き出すのか? 取得したい結果によっても方法が変わってくるのでは?? 以上

関連するQ&A

  • ファイルを行ごとに比較するシェルスクリプトについて

    ファイルを行ごとに比較するシェルスクリプトをご教授ください。 例えば(master.txt)(a.txt)(b.txt)(c.txt)(ok.txt)(ng.txt)と4つのファイルがあり、 (master.txt)と(a.txt)の行を比較し(a.txt)の中のある行が(master.txt)の行と一致した場合(ok.txt)に (master.txt)の行と一致しなかった場合(ng.txt)に入れる。 その後(master.txt)と(b.txt)の比較し(a.txt)が使用したものと同じ(ok.txt)or(ng.txt)に入れる・・・ といったように繰り返していくシェルスクリプトはどのようにして作成するのでしょうか? txtファイルの中の行はランダムに入っており、x.txtの一行一行ををmaster.txtの全行と比較する必要があります。 自分で作ってみたものは、while文を2重で使い一行ずつ取り出しcase文で行が一致した物を(ok.txt)に入れる 所までは成功しているのですが、複数回繰り返す時にどのようなロジックで不一致行を(ng.txt)に入れる ことができるのかが考え付きませんでした。 よろしくお願いいたします。

  • ファイル読み込みについて

    おはようございます。 行き詰ったので質問させてください。 指定したリストBOXの項目(いくつかは分からない)にあるtxtファイルの内容を配列に順に入れたいのですが、方法が分かりません。 やりたい事は・・・ ・リストBOXに入っているファイル名はすべてtxtで昇順に並んでいるので、それらの中身をつなげたいです。 ・たとえば、1.txt(あいうえお) 2.txt(かきくけこ) 3.txt(さしすせそ)となっていたら、それらの内容を配列の0.1.2に入れたあとに、配列の中身を順番にくっつければ「あいうえおかきくけこさしすせそ)。 となるようにしたいです。 txtファイルの中身は文章のように長かったりすることもあります。 私はこの方法しか思いつかなかったのですが、実装方法が分からないので教えていただきたいです。 よろしくお願いします。

  • ファイル比較結果を保存できるソフトを探しています

    ファイル比較ツールを探しています。比較した後に、違いがあった部分だけ別ファイルに保存してくれるツールはありませんでしょうか。 例としては以下のようなイメージです。 sample1.txtとsample2.txtを比較するとsave.txtを保存できる感じです。 例では数行しかないですが、実際は6000行以上あります。 sample1.txt a b c d e sample2.txt a c c d d save.txt c d よろしくお願いします。

  • 行単位のデータ比較とカウントアップ方法について

    皆様のお知恵を拝借したく投稿しました。 よろしくお願いします。 perlでのデータ処理で2つの入力ファイルがあります list1 list2 ----------------- ------------------ start end start end 1 10 6 8 12 16 7 14 20 30 35 39 34 42 41 47 80 89 110 130 ----------------- ------------------ この2つのファイルを比較して以下の処理を行ないます (1)list1から見たlist2の1行目を比較し、領域の重複が見られたら両方にフラグを立てる →この場合領域6 - 8で重複が見られる (2)両方の終点を比較し、終点値の小さい方をカウントアップ(次の行へ進む) →1行目の場合、list2の終点が小さいのでlist2の行を進める (3)list1の1行目とlist2の2行目を比較する (4)終点を比較して終点の小さい方の行をカウントアップする →以下(1)~(4)の行程を繰り返す。 (5)上例を比較の流れは以下のとおりになります list1 1-10 , list2 6-8 list1 1-10 , list2 7-14 list1 12-16 , list2 7-14 list1 12-16 , list2 35-39 list1 20-30 , list2 35-39 list1 34-42 , list2 35-39 list1 34-42 , list2 41-47 list1 80-89 , list2 41-47 list1 110-130 , list2 41-47(行数が足りなくなったらlist2の最後の行と比較する) 最終的にlist1,list2の重複のあるフラグ数をカウント、出力する と言うアルゴリズムです コーディングの流れとしては (1)双方の二次元配列をループで回す (2)始点に注目して重複がないか比較する (3)終点を比較して該当するリストの行数のカウントアップをする というふうになると思うのですが、 (3)のやり方と、最後の片方のリストの行数が足りなくなったときの 比較とカウントアップのやり方がよく実装できません これをperlでコーディングしたいのですが どのようにしたらよいのでしょうか? ご助言いただけますと幸いです

    • ベストアンサー
    • Perl
  • ファイル比較ソフトDF(Ver1.41)を使用しています。

    ファイル比較ソフトDF(Ver1.41)を使用しています。 ファイルメニューから、比較データを保存(txt)にて保存されるのですが、 保存された結果を見ると、行の内容が途中で途切れて保存されています。 これを途切れないように比較結果をtxt保存するためにはどのようにしたらよいでしょうか?

  • テキストファイルの日付表示

    JAVA初心者なのですが、テキストファイルに出力する時にファイル名を現在日付にしたいのですが、どうすればよいでしょうか?(yyyymmdd.txtを20070316.txtというふうにしたい) 後、@SuppressWarnings("unchecked")と記述しているのにコンパイルで-Xlint:unchecked.警告が出てきてします!どなたかご教授ください!!ちなみにJAVA1.5 import java.io.File; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.IOException; import java.util.ArrayList; public class Writedown { @SuppressWarnings("unchecked")/*コンパイラの警告を抑制する */ public static void fileWrite(ArrayList<ArrayList> WriteArrayList) { try { File txt = new File("yyyymmdd.txt"); /*出力するファイル*/ BufferedWriter bw = new BufferedWriter(new FileWriter(txt));/* try { for(int i = 0; i < WriteArrayList.size(); i++){ ArrayList list = WriteArrayList.get(i); if(i == 0){ bw.write((list.size() - 3) + "科目成績表\r\n"); } for(int j = 0; j < list.size(); j++){ if(j > 0){ bw.write("\t"); } if(list.get(j).toString().equals("名前")){ list.remove(j); list.add(j,"名前"); } bw.write(list.get(j).toString()); System.out.print(list.get(j) + "\t"); } bw.write("\r\n"); bw.flush(); System.out.println(""); } } catch (IOException e) { System.out.println("ファイル書き込みエラー"); } bw.close(); } catch (IOException e) { System.out.println("ファイルオープンエラー"); } } }

  • テキストファイルにおいて任意の単語を含む一行を削除させたい

    テキストファイルの任意の単語を含む一行を削除させるプログラムを作成したいです。 例えば、 test.txt 今日は久しぶりに晴れました。 とてもいい天気だったので、ショッピングに。 その後、アップルストアにて新発売のMacを触ってきました。 上記のようなテキストファイル(test.txt)に対して、 データベース等に格納されている単語のリストと参照させ、 リストにある単語を含んでいる行を削除させたテキストファイルを生成させたいです。 例えば、リストに"天気"の単語があれば、 以下のようなテキストファイルを生成させたいです。 result.txt 今日は久しぶりに晴れました。 その後、アップルストアにて新発売のMacを触ってきました。 このようにするには、どのようにプログラムを作成すればよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • terapadを使って、perlについての問題です。

    terapadを使って、perlについての問題です。 第一問はある英語の文書ファイルから、その文書の段落の数、文の数、単語の数をカウントするプログラム。段落の区きりが改行で、文の区きりは、「 .」(半角スペース2個に.1個)で、文字の区きりは、「 」(半角スペース)あるとする。 第二問はある単語ファイル(例えばtest.txt)に乗っている単語リスト(1行1単語)の単語の意味を調査し(辞書は先に用意したファイルで調査するdictionary.txt)、その結果をファイルに保存するプログラムを作成するプログラム。(ファイル名をout.txtする)そのプログラムを提出すること。 誰か教えてください、プログラミングの初心者なので…全く思いつかない。><

  • ファイルの読み込みと置き換え

    Perlでテキストファイルを読み込み、テキストの一部を置き換えをするというプログラムを作っています。 用意されているテキストファイルは複数行あるもので、リスト作成ツールのフリーソフトにより作成されています。 目的はファイルを読み込み、一行一行中を見て特定の文字を置き換えて、最後に配列に一行一行いれていくというものです。 逆に配列に一度いれて一個一個置き換えてもOKで、結果が同じならばOKです。 以下にそのプログラムを書きます。 ############################## open(IN,"list.txt") || die "ファイルが見つからないので終了します。"; @file = <IN>; $count=@file; while(<IN>){ $_=~s/xls/エクセルファイル/; print "置き換え中!残りあと$count行です\n"; $count-- } close(IN); print"@file[18]","\n"; ############################## 最後の行で置き換えが成功したか見てますが、これを実行しても何も表示されません。 もちろん行数は18行どころか100行くらいあります。 たぶん配列の入れるタイミングとか何かが間違っていると思うのですが、どこで間違っているのかがよくわかりません。 教えていただけると助かります。

    • ベストアンサー
    • Perl
  • vbsでtxtファイルを1行ずつ読み取って

    vbsでtxtファイルを1行ずつ読み取って 配列に格納し、メッセージボックスで表示したいです。 サンプルソースや参考サイトを教えてください。 txtファイルの中身のイメージは↓のような感じです。 shinagawa yokohama ・・・ ・・・ 大体50行位です。 配列でなければなりません。 よろしくお願いします。

専門家に質問してみよう