2011-10-29 54 views
5

Javaでは、文字列ではなく、一度に1文字しか読み込まないように、ファイル(テキストファイル)を読み込む方法があります。これは非常に基本的なレキシカルアナライザのためのものなので、なぜ私はそのような方法を望んでいるのか理解できます。ありがとうございました。テキストファイルから文字を読み込む

+0

ためjava.ioパッケージから任意のReaderを使用することができ、私は理解していません。どのように入力を扱うかは、読み方と同じではありません。IMOでは、バッファ付きのリーダーを使用して、入力文字を文字で処理し、明示的にそれを読み取らないようにしてください。 –

答えて

3

あなたが(それはあまり大きくない場合)文字列としてメモリにファイル全体を読み込み、文字

+2

また答えはありません。 – FailedDev

+1

答えは、答えになるコードが含まれていると思いますか? –

5

による文字列の文字の上に反復することができますここで時間

で1つの文字を書く/読むためのサンプルコードがあります
public class CopyCharacters { 
    public static void main(String[] args) throws IOException { 

     FileReader inputStream = null; 
     FileWriter outputStream = null; 

     try { 
      inputStream = new FileReader("xanadu.txt"); 
      outputStream = new FileWriter("characteroutput.txt"); 

      int c; 
      while ((c = inputStream.read()) != -1) { 
       outputStream.write(c); 
      } 
     } finally { 
      if (inputStream != null) { 
       inputStream.close(); 
      } 
      if (outputStream != null) { 
       outputStream.close(); 
      } 
     } 
    } 
} 

注:この回答はRefリンクからサンプルコードをコピーするように更新されましたが、これは基本的に以下の回答と同じです。

REF: http://download.oracle.com/javase/tutorial/essential/io/charstreams.html

+1

答えではなく、むしろコメントです。 – FailedDev

+0

リンクを見ましたか?文字ごとにテキストファイルを読み込む方法を示します。 –

+0

コメントに入れる? – FailedDev

1

あなたはストリームとリターンから1つの文字を読みにInputStreamReaderクラスからreadメソッドを使用することができます-1それは、ストリームの終わりに達した

public static void processFile(File file) throws IOException { 
     try (InputStream in = new FileInputStream(file); 
      Reader reader = new InputStreamReader(in)) { 

      int c; 
      while ((c = reader.read()) != -1) { 
       processChar((char) c); // this method will do whatever you want 
      } 
     } 
    } 
0

ありますいくつかの可能な解決策。一般的にあなたが読んで文字、例えば:実際

// Read from file 
BufferedReader reader = new BufferedReader(new FileReader("file.txt")); 
// Read from sting 
BufferedReader reader = new BufferedReader(new StringReader("Some text")); 
関連する問題