• 締切済み

テキストファイルから空白行をよむ

ssr-y6の回答

  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.3

 readLineは、空行ならば空の文字列を、テキストの終わりならばnullを返しますので、通常は[1]の方法で問題はありません。 しかし、以前に異なるプラットフォームの改行コードが混在するテキストを処理する時に、それと同じ体験をしたことがあります。 SMTPやHTTPのヘッダとボディの区切りは、プラットフォームに関係なく0x0D+0x0Aを使うことになっているので、 この場合にもそのような現象が起きるのではないでしょうか。  そして、そのときは[2]の方法で対処できたと思います。 -----[1]----- import java.io.*; public class textout1 { public static void main(String args[]) { String Str1; try { BufferedReader BR = new BufferedReader(new FileReader(args[0])); while ((Str1 = BR.readLine()) != null) System.out.println(Str1); BR.close(); } catch(Exception ex) { System.out.println(ex.toString()); }; }; } -----[2]----- import java.io.*; public class textout2 { public static void main(String args[]) { String Str1; try { BufferedReader BR = new BufferedReader(new FileReader(args[0])); while(true) { if ((Str1 = BR.readLine()) != null) System.out.println(Str1); else if (!BR.ready()) break; }; BR.close(); } catch(Exception ex) { System.out.println(ex.toString()); }; }; }

関連するQ&A

  • ファイル内の1行(レコード)から指定バイト数だけを読込みたい。

    ファイル内の1行(レコード)から指定バイト数だけを読込みたい。 // ファイルオープン FileInputStream fis = new FileInputStream(file); InputStreamReader isr; isr = new InputStreamReader(fis); BufferedReader result = new BufferedReader(isr); while (result.readLine() != null) { // 末尾まで移動する } 上記のようにBufferedReaderを使い、ファイルを読み込んでいるのですが、 ファイル内の1行ごとに指定バイト数だけを読み込みたいです。 readLineメソッドでは1行を全部読み込んでしまうため出来ません。 (readLineで一度他の変数へ入れてからというのは無しです。読込む時点で指定バイト数としたいのです。) readメソッドでは、行ごとの指定って出来ないですよね・・・。 ファイル操作系の知識が少ない為、なかなか探せません。 読み込む時点で1行の取得レコード長に制限値を設ける方法はないでしょうか? また、取得レコード長が制限値を超えた場合、エラーメッセージを出したいのですがその判定とかも可能でしょうか? どうかよろしくお願いします。 ロジックとしてはこんな感じにしたいです。 while(ファイルの終端まで行を読み込む){   // 読み込んだ1行が2048バイト未満かを判定   if(読み込んだ1行が2048バイトを超えている場合){     エラーメッセージを出力する(処理はそのまま続行)   }   1行から2048バイト未満を取得 }

    • ベストアンサー
    • Java
  • テキストファイルの行を指定して読み込み

    テキストファイルの読み込みたい行を指定して テキストボックスに表示させたいのですが、 どのようにすればよいでしょうか? StreamReaderには一行分の文字を読み取るReadLine メソッドがありますが、行は指定はできないようです。 良い方法があればアドバイスを頂きたいです。 よろしくお願いします。 --- 開発環境:VS2005 pro OS:Vista

  • java配列を用いたテキスト(画像)読み込みについ

    javaで配列を用いたテキスト(画像)読み込みについて。 教えて下さい。よろしくお願いします。 こんにちは。 現在、javaでプログラミング練習をしているものです。 複数のテキストファイルをランダムに表示させる、というプログラムで、 知恵袋であった、以下の質問を参考に作っています。 (これを応用して、画像のランダム表示を作りたいと考えています) http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1229836927... 自分なりに書き換えてみたりしましたが、上手く動きませんでした。 ((Unknown Source)・・・と表示されてしまいます;) 普通のテキストファイル読み込み、テキストフィールドに表示するプログラムを作りました。 これは正常に動きます。 もし以下のプログラムを活用してランダム表示ができる方法をご存知の方、 是非教えてください。 よろしくお願いします。 //テキスト読み込み try{ File file = new File("adv/testsc.txt"); if (checkBeforeReadfile(file)){ BufferedReader br = new BufferedReader(new FileReader(file)); String result = ""; String allString = ""; while((result = br.readLine()) != null){ allString += result + "\n"; } txtar1.setText(allString); String str; while((str = br.readLine()) != null){ txtar1.setText(str.toString()); } br.close(); }else{ txtar1.setText("ファイルが見つからないか開けません"); } }catch(FileNotFoundException a){ System.out.println(e); }catch(IOException a){ System.out.println(e); } どうぞよろしくお願いいたします。m(_ _)m

  • PowerShellでテキストの空白行が消えない

    PowerShellを使ってあるテキストを整形したいのですが、ネット上の文献等を参考にしてもまったく思い通りに動いてくれません。 どなたかお助け願えませんでしょうか。 下記のテキスト例をコピペしてもらうとわかると思いますが、最初から空白行があり、かつ文字列の後ろに無駄なスペースがあります。 整形の仕様として ・文字列「------------  」と「Power Shell 」は不要 ・空白行不要 ループで不要な文字列は手始めに置換します。 そうするとさらに無駄な空白行が増えてしまうのでそれを削ることをしたいわけなのですが、行を削除する関数が見つかりません・・・ おまけに「`n`r」を検索して""と置換してみても行は消えません・・・ どなたか詳しい方いらっしゃいましたら教えて下さい。 よろしくお願いいたします。 <テキスト例 ここから> ------------   Power Shell  AAAAAAA AAAA BBBBB bbbbb CCCCCCCCCCCCCCCCCCCCC DDDDD EEEEEE F <テキスト例 ここまで>

  • ファイルの読み込み

    "DataFile"に何行か文字列がはいっており、下のソースでそれをテキストボックスにすべて出力したいのですが、1行しか読まれません。 やり方を教えてください。 String moji = null; FileRead(){   try {     BufferedReader br = new BufferedReader( new FileReader( "DataFile.txt" ) );     while ((moji = br.readLine()) != null){       taList.setText(moji);     }     br.close();   }   catch ( Exception e ) {     System.out.println( e.getMessage() );   } }

    • ベストアンサー
    • Java
  • Fileから指定した行を読み取りたい

    現在、例えば1300行目を読み取りたいとしたときに、今現在の私のやり方では、 FileInputStream fis = new FileInputStream("xxxxxx.txt"); InputStreamReader ir = new InputStreamReader(fis , "SJIS"); BufferedReader br = new BufferedReader(ir); String ch; int count=0; while((ch = br.readLine()) != null){  count++;  if(count == 1300)    break; } System.out.println("指定行の内容は:"+ch); br.close(); のように、1300回行を読んだらその内容を出力するようにしているのですが、これは、かなり無駄があると思うのです。なので、指定した行に読み込みヘッダを移動して、その指定した行を読み取りたいのですが、指定行を一発で読み取ることはできますか? skip(long numChars)メソッドを使用することを考えましたが、ファイルの各行のバイト数は各行ごとに異なるので、規則性がなく無理であると考えあきらめました。

  • テキストファイルの任意の行からのデータ書き込み

    C++Builder5.0(Professional)でテキストファイル 書き込みのプログラムを作成しています。 あるテキストファイルがあり、そのファイルの 1,2行目にはすでにテキストデータが書き込まれている ものとします。 このテキストファイルを開き、4行目から 10行目までデータを書き込むといったプログラムは どの様に作成すればよろしいでしょうか。 御回答を宜しくお願いします。

  • CSVファイルの特定の行だけを読み込みたいです。

    例えば以下のようなCSV形式のデータが10000行あるとします。  1,10,15,3  2,1,5,1  70,2,4,2  2,4,5,6  11,1,9,9  ・・・ 上記ファイルから、例えば9999行目を取得したい場合、 現在は以下のような手順で9998行をループで読み込んでから、 9999行目を取得しています。(エラー処理などは省いています)  BufferedReader br = new BufferedReader(new FileReader("hoge.csv"));  for( int i=0; i<9998; i++ ){ br.readLine(); }  System.out.println("9999行目="+br.readLine()); ただし、上記の通りループを9998回まわし、 データを1行ずつ読み込むのは非常に効率が悪いです。 できれば、br.readLine(9999); といった感じで行数を直接指定できる方法があるならば、 無駄な処理を省けて見栄えも速度も良くなると思うのですが、 Javaの標準のクラスではこういったことは可能なのでしょうか? 私なりに調べてみたのですが調べ方が悪いのか知識が及ばないため、 こちらで質問させていただきました。 もしご存知の方がおられましたらアドバイスいただけますと助かります。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Appletからテキストファイルを常に同期

    こんにちわ。よろしくお願いします。 現在、JavaAppletを勉強中なのですが、 同じサーバ内にあるテキストファイルをAppletで表示して 手動、もしくは他プログラムからそのテキストファイルが書き換えられても その書き換えられた後のテキストをAppletで表示する、といった事は可能でしょうか? Appletはブラウザで開いたまま、としてです。 runメソッドの中にBufferedReaderを置き、 文字列を読み込んだ際に、その前に読み込んだ文字列と比較して、違えばrepaintとしてみたのですが、 Appletを表示したままテキストファイルを書き換えても、以前の文字列のままでした。 キャッシュやセキュリティの問題で、プログラムではどうしようもないものなのでしょうか。 当方、Javaはまだ勉強始めなので、もし解決法が分かる方いましたら、ご教授お願い致します。

    • ベストアンサー
    • Java
  • ファイルからテキストエリアへ

    ファイルからReadLineで読み込んだ値を テキストエリアに表示したいんですが うまくいきません。 ブラウザに表示させることはできたんですが。。。 一つのaspでファイル読み込み、 テキストエリアに表示。 できませんか? ASPは初心者です。 わかりやすく書いて頂けるとうれしいです。 よろしくお願い致します。