• ベストアンサー

テキストファイルで行数指定で移動

2つ前に質問した者です。テキストファイルの検索のため行数を指定して移動したいのですがどうしたらいいですか? (つまりn行目を指定して移動する方法)

  • Java
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

ANo.2の方が書かれたように、「速く読みたい」のであれば基本的にランダムアクセスです。最初にキーと位置情報をindex化しておいてキー検索→位置情報からランダムアクセスになります。内容はテキストファイルでも「テキストファイル」としての読み書きは使いません。 キー部分をどの長さまで捉えるか・・といった問題はある程度データ予測できないと(テキストファイルの全体量とか)難しいです。どの程度の量を扱う予定なんでしょうか? 全部メモリ上で扱える程度の量ならメモリ上でテキストのまま処理することはありますが、そのくらいの量なら先頭から読んでも問題ないでしょうしねぇ(汗

その他の回答 (2)

回答No.2

ランダムアクセスしてみては?

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>2つ前に質問した者です。 2分探索ということでしたよね?検索処理をする場合には検索キー(とそのデータ位置)はオンメモリです。全部が載らないときはn個おきに取ったり、必要に応じて別途インデックスファイルを作成したりもしますけど、検索はオンメモリが基本です。 というかテキストファイルを行で呼び出すのは一番非効率です。アタマから読まないとわからないのですから。

osiete_kun
質問者

補足

しかし何行目わかっても結局その行までBufferedReaderクラスの readLine() で移動していては無駄が?

関連するQ&A

  • 【VBA】テキストファイルを指定行数からの読み込み

    こんばんは。 EXCEL VBAでテキストファイルを読み込む事について質問です。 VBAでテキストファイルをこちらから指定する行数(上から何番目という感じで)からデーターを読み込みたいのですが、どの関数をつかっていいかわからず困っています。 1行ずつ読みこむ「Input Line関数」では、無駄な行まで読み込むので動作が遅くなります。 読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。 ちなみに指定する行数は、ファイルによって違います。 あらかじめ「Input Line関数」で、ある文字が何行目にあるかを探す行為をあらかじめ行っています。 みなさまのアイデアを拝借したく、よろしくお願いします。

  • 50万行のtxtファイルを行数指定で分割したい

    50万行レベルのテキストファイルがあります このファイルをVBAで行数を指定して3つのファイルに分割したいのですが可能でしょうか イメージとしては以下のような形になります ・一行目〜テキストボックス1で指定した行数 ・textbox1で指定した行数〜textbox2で指定した行数 ・textbox2で指定した行数〜最終行 どなたか教えて下さい よろしくお願いします

  • テキストファイルの指定した行数、文字数だけを表示させたい。

    VB6.0を始めたばかりの初心者です。 VBで保存したテキストファイルを読み込んで 指定した行数の何文字目から何文字目まで (例えば4,5,6行目の5文字目から10文字目まで) だけを表示させたいのですが分かりやすく説明してくれる人が周りにいません。 色々と探してみたのですがぴったり求めているものにたどり着かず質問させていただきました。 どうかよろしくお願いします。

  • textファイルの文章の行数を調べたい

    textファイルに記述されている文章の行数が何行あるかを調べる方法はありますか? OSはWindows2000を使用しています。 よろしくお願いします。

  • テキストの行数を知りたい

    メモ帳でひたすらテキストを記入しています。 そこで行数を改めて数えようと思ったのですが、量が膨大すぎて数え切れません・・・ そこでその行数を数えれる方法を教えていただきたいともい質問させていただきました。 ちなみにWORDで貼り付けてみても上手くいきませんでした・・・ サイトからコピーした部分の行と行の間に空白があって・・・

  • テキストファイルの行数を指定してとばす方法

    Java初心者です。 テキストファイルの中のある1行を読み込むプログラムを作成したいと思っています。その際、毎回先頭から読み込むのでは効率が悪いので指定した行に直接アクセスしたいのですが、その方法がよく分からないので教えていただけませんか? BufferedReaderやLineNumberReaderをループで回すのではなく、ランダムアクセスをすればよいというところまでは分かっているのですが、ランダムアクセスの方法が今ひとつ分かりません。

    • ベストアンサー
    • Java
  • Pythonでテキストを行数指定して読み込む

    Pythonの勉強を始めて4ヶ月ほどの者です。 今、コマンドライン(Winでのコマンドプロンプト、Linux系での端末など)からPythonでメールアドレスが書いてあるテキストを読み込み、そのアドレスにメールを送るプログラムを考えてます。 具体的には、address.txtというファイルに、 aaa.example@test.ne.jp bbb.example@test.ne.jp ccc.example@test.ne.jp という風に記述してあるとします。(一行に一アドレスです。) プログラムの部分(最初からではなく途中です)は、 print "Select the E-mail Address below" a = open("Address.txt") for i in a: print i to = raw_input(":") とまできたんですが、自分としては読み込んだ「Address.txt」に書かれてるアドレスを行数ごとに指定して読み込みたいんです。つまりraw_input(":")に 1を入れたら1行目を指定→「aaa.example@test.ne.jp」 2を入れたら2行目を指定→「bbb.example@test.ne.jp」 3を入れたら3行目を指定→「ccc.example@test.ne.jp」 が選択されるようにし、変数toに代入されるようにしてSMTPモジュールのto_addrに引き渡すようにしたいのです。 ですが行数を指定してテキストを読み込むメゾットやオブジェクトが入ってるモジュールや関数はありますか? Pythonは2.6.4と3.0.1の両方のバージョンが入ってます。できれば両方で動かしたいので3.0.1で仕様の変更があったら教えてもらえるとありがたいです。 OSはメインがWinXPSP3、サブ(テスト用、VMWare使用)にUbuntu9.04(Pythonは2.6系だったと思います。)

  • Word のテキストボックスごとに行数(各行の隙間)をかえたい

    WindowsXPのWord2003です。テキストボックスをいくつか貼り付けてあり、そのうち一つは文字サイズ7ぐらいで細かい情報をいれます。横の字幅は「書式→フォント」で狭く設定することができますが、行を狭く設定する方法がわかりません。「ファイル→ページ設定」で行数指定すると狭くできますが、バックの文章や他のテキストボックス内の行数も影響をうけてしまいます。特定のテキストボックス内のみ行数を狭くするのはどうすればよいでしょうか。

  • ファイルから指定行数分だけ読み込む

    あるファイルに下記のようにタブで区切られた、ログのようなファイルがあった場合。 aaa test 1 bbb test 2 ccc test 3   ・   ・   ・ このログの1行目~30行目まで1行ずつGETしたい場合や、30行目~60行目までGETしたい場合はどのようにしたらいいのでしょうか?? 30行ずつ配列にいれこんだあとに、表示させようと思ったのですが、手間がかかりそうなので。。 grepでもこのように行数を指定できるやり方があればいいのですが。。。

    • ベストアンサー
    • PHP
  • ワード2007 文字数と行数の指定がファイルを開くたびに変わってしまう

    ワード2007 文字数と行数の指定がファイルを開くたびに変わってしまう。 ページ設定で、文字数と行数の指定を「標準の文字数を使う(N)」にして保存しても、 ファイルを開くたびに、「行数だけを指定する(O)」に勝手に変わっています。 どうしたら、解消できるか方法を教えてください。お願いします。