• 締切済み

はじめまして。よろしくお願いいたします。

はじめまして。よろしくお願いいたします。 java初心者です。 javaでファイルを読み込み、1行ずつ処理して別プログラムに出力するプログラムを作成しています。 ----サンプルソースコード import java.io.*; class testReader { public static void main(String[] args) { FileReader fr = new FileReader("test.txt"); BufferedReader br = new BufferedReader(fr); while (true) { String readLine = br.readLine(); : : ----サンプルソースコード 上記のような感じで処理を進めるのですが、1点問題にぶつかりました。 readLineで読み込んだ行にタブ文字がある場合、タブ文字が消えてしまいます。 読み込むテキストファイルはShift-JISで保存されています。 なにか回避策はございませんでしょうか。 よろしくお願いいたします。

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

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.3

タブが消える という現象をどのようにして確認したの? たとえば String readLine = br.readLine(); の直後に System.out.println(readLine); とかして確認したのかしら。 タブは環境によってスペース4個分だったり8個分だったり 位置そろえになったりと いろいろな表現がされるわね。 それによって、タブがそこにあるけど見えなくなっている なんてことはない?

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

試してみましたけれど、タブ文字は消えません。 String readLine = br.readLine(); for (int i=0; i<readLine.length(); i++) { System.out.println((int)readLine.charAt(i)); } のようにして、タブ文字を含むテキストファイルを読み込ませるとタブ文字のコードである9が表示されました。 タブが行頭や行末にあったり、2文字以上のタブが連続したりしても問題ありません。

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

java.io.FileReader を使うのを止めて、 java.io.FileInputStream を使ってみては、どうでしょう。

関連するQ&A

  • エラーの原因がわかりません

    JAVA初心者ですが、ファイル入力を行うプログラムを実行 すると、エラーが出ますが、そのエラーの原因が まったく見当がつきません。 誰か教えてください。 ------------読み込みデータ(loc.dat) 2 11 1 4 1 5 7 1 3 7 7 2 12 11 1 4 1 11 12 4 1 5 3 1 1 11 13 4 1 5 2 1 -------------プログラム import java.io.*; class ExReader {   public static void main(String[] args) { try { //読み込みファイル指定 FileReader fr = new FileReader("loc.dat"); BufferedReader br = new BufferedReader(fr); //ファイルから1行ずつ読み込む String s; while ((s = br.readLine()) != null) { System.out.println(s); } //読み込みファイルをクローズする br.close(); } catch (Exception e) { System.out.println("err: "+e); System.exit(1); } } } ---------------コンパイル結果 C:\JAVA\sim>javac ExReader.java ExReader.java:7: シンボルを解決できません。 シンボル: コンストラクタ FileReader (java.lang.String) 場所 : FileReader の クラス FileReader fr = new FileReader("loc.dat"); ^ ExReader.java:8: シンボルを解決できません。 シンボル: コンストラクタ BufferedReader (FileReader) 場所 : java.io.BufferedReader の クラス BufferedReader br = new BufferedReader(fr); ^ エラー 2 個

    • ベストアンサー
    • Java
  • javaでの文字列からの数字抽出

    文字列内の数字だけを取り出したいとおもっています。 たとえばファイル内からreadline()で読み込んだ文字列が [0, 0] [-0.34063, 0.0756989] [-0.362579, 0.118652] [-0.36264, 0.118637] だったならば 配列内に {0,0,-0.34063,0.0756989,-0.362579,0.118652,-0.36264,0.118637 } のように格納したいのですが可能なんでしょうか? "["や空白のようなものを削除して数字だけを取り出したいのです。 現在はこのようにファイルの文字列を取得しています FileReader fr = new FileReader(inputpath); BufferedReader br = new BufferedReader(fr); String read = br.readLine(); よろしくお願いします。

    • ベストアンサー
    • Java
  • 文字列の置換

    JAVAであるファイル内の文字列を置換するプログラム(日本語)を作りたいのですが、 ・ ・ String h_s; FileReader h_fr = new FileReader(in_filename); BufferedReader h_br = new BufferedReader(h_fr); while(true){  h_s = h_br.readLine();  if (h_s == null){   break;  }  ●文字列を置換するプログラム● } ・ ・ ここの●文字列を置換するプログラム●にあたる適当な関数って何かありますか? たとえばperlでいうと↓みたいなものなのですが・・・ s/置換前文字/置換後文字/g よろしくお願いします。

    • ベストアンサー
    • Java
  • BufferedReaderなどについて

    今JAVAを勉強しているのですが。 少しつまづいてしまいました。 ---------------------------------------------- import java.io.*; class Cat { public static void main(String args[]) throws IOException { File inputFile = new File(args[0]); FileReader in = new FileReader(inputFile); BufferedReader br = new BufferedReader(in); //・・・続く ---------------------------------------------- 上のプログラム全て、といいますか import java.io.*; や BufferedReader のことが特によく分かりません。いろいろサイトや本などを見てみたのですが、それでもいまいち理解できませんでした。どなたか、教えてください、お願い致します

    • ベストアンサー
    • Java
  • ファイル出力時の

    以下のソースでファイル出力するのですが、 BufferedReader br = new BufferedReader(new FileReader(new File(args[0]))); PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(args[1]))); //一行読み込みを行った文字列を格納 String line; //一行読み込み while((line = br.readLine()) != null){ //一行書き込み pw.write(line); System.out.println(line); } コンソールへの出力は正常に出力されるのですが、 ファイルへの出力は改行されずに一行で出力されてしまいます。 どうすればファイル出力も正常になるか教えてください。

  • CSV読み込み 文字化け

    失礼いたします。 以前のログを見てエンコードを設定してみたのですが、出力が文字化けします。ローカルファイルを読み込んでコンソール出力しているだけなのですが・・・。 分かる方、よろしくお願いします。 -------------------ソースはここから import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; // import java.io.FileReader; FileReaderからInputStreamReaderに変更済み import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class ReadCSV { public static void main(String[] args) { try { File csv = new File("C:\\AP.csv"); // BufferedReader br = new BufferedReader(new FileReader(csv)); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"EUC_JP")); // BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"MS932")); while (br.ready()) { String line = br.readLine(); StringTokenizer st = new StringTokenizer(line, ","); while (st.hasMoreTokens()) { System.out.print(st.nextToken() + "\t"); } System.out.println(); } br.close(); } catch (FileNotFoundException e) { キャッチ処理 }

    • ベストアンサー
    • Java
  • jspでファイルの読み込み

    jspでwebサーバーにある“1.txt”ファイルを読み込んでそれを表示するプログラムを作成したのですが、エラーが出てしまいます。サーバーの環境(jsp実行環境等)は問題ありません。以下のコードで何かおかしなところがありましたら教えてください。 <%@ page contentType="text/html" import="java.util.*,java.io.*" %> <% String result = ""; String h_s = ""; FileReader h_fr = new FileReader("1.txt"); BufferedReader h_br = new BufferedReader(h_fr); while(true){ h_s = h_br.readLine(); if (h_s == null){ break; } result = result + h_s; } %> <%= result %>

    • ベストアンサー
    • Java
  • JAVAでエラーがでる。

    JAVA初心者なのですが、下のプログラムは数値を入力して、それを表示させるという簡単なプログラムなのですが、実行すると、 String str = br.readLine(); のbr.readLine();の部分に赤い波線が出て、 「処理されない例外の型 IOException at B.main(B.java:11)」 というエラーが出てしまってこまっています。 参考書のとうりに入力しているのになぜでしょうか? タブやスペースが使えないので見にくくなってしまってすみません。 どなたかJAVAに詳しい方 教えてください。 import java.io.*; public class B { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); System.out.println(num + "が入力されまた。"); } }

    • ベストアンサー
    • Java
  • int型で表示したいのですが・・・

    java初心者です。 テキストファイルの読み出しを行っているプログラムで int型に数値を格納して表示したいのですが、わからず困っています。 下記はテキストファイルの読み出しを行ったプログラムです。 import java.io.*; class BufferedReaderTest { public static void main(String[] args) { try { FileReader in = new FileReader("file name"); BufferedReader br = new BufferedReader(in); String line; while ((line = br.readLine()) != null) { System.out.println(a); } br.close(); in.close(); } catch (IOException e) { System.out.println(e); } } } int a = Integer.parseInt(line);を使ってみたのですができませんでした。 読み込みしようとしているファイルの中身は -0.00012 -0.00009 -0.00009 -0.00012 -0.00009 -0.00009 -0.00009 -0.00012 ・・・・・・・・・ となっています。 教えていただけると助かります。

    • ベストアンサー
    • Java
  • コマンドライン引数

    『やさしいJava』で勉強してます。 import java.io.*; class Sam3 { public static void main(String args[]) { if(args.length != 1){ System.out.println("ファイル名が違うよ。"); System.exit(0); } try{ BufferedReader br= new BufferedReader(new FileReader(args[0])); String str; while((str = br.readLine()) != null){ System.out.println(str); } br.close(); }catch(IOException e){ System.out.println("エラー"); } } } で、コンパイルして、 Sam3 test2.txt と実行しても 「準備ができていません。読み取り中・・・」 としかでません。 なにか間違いがあるのでしょうか? お願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう