2017-06-21 3 views
-2
1.File file = new File("abc.txt"); 

    2.  char[] ch=new char[(int)file.length()]; 
    3.  System.out.println(file.length()); 
    4.  FileReader fw=new FileReader(file); 

    5.  fw.read(ch); 

    6.  for(char ch1: ch){ 
    7.   System.out.println(ch1); 
     } 

ここで2行目では、ch配列がインデックスの総数を開始していることがわかります。また、コード全体では、メモリインデックスにデータが割り当てられていません。 しかし、For Eachループがch変数からデータを抽出していることもわかります。それはどのように可能ですか?このchar配列はどこからデータを取得しますか?

注:abc.txtファイル私は、コードを説明してもらおう文字データ

+0

ライン5に 'ch.length'の文字' abc.txt'ファイルから読み込まれ、それがfw.read() ' –

+2

「'し、中にパラメータとして渡されるようchar配列に入れがありますメモリインデックスにデータが割り当てられていないことを示すコード全体が "===>' fw.read(ch); '<===あります。 –

+5

これはまだひどいコードであることに注意してください。1)1文字あたり1バイトがあると仮定します。 2)ファイルがシステムのデフォルトエンコーディングになっているものとみなします。 3)ファイルのサイズが変わらないと仮定します。 4)これは 'read'への単一の呼び出しがデータ全体を読むことを前提としています。 5)それは読者を閉じない。 –

答えて

0

が含まれています。

public void test() throws IOException { 
    // Specify the file we want to read. 
    File file = new File("abc.txt"); 
    // Allocate enough space for the file contents. 
    char[] ch = new char[(int) file.length()]; 
    // Tell user how big the file is. 
    System.out.println(file.length()); 
    // Create a FileReader that will read the file. 
    FileReader fw = new FileReader(file); 

    // Read the file into the array. 
    // Note: The array is already the correct length for the file so reads all of the file. 
    fw.read(ch); 

    // Print each character on a separate line. 
    for (char ch1 : ch) { 
     System.out.println(ch1); 
    } 
} 
+0

です。しかし、fw.read(ch)が何かしているのを見ているだけです。しかし、インデックスにどのように文字を入力しているのかはわかりません。 – ABC

+0

@ Md.MahadiHossain - 'read'メソッドはファイルのデータで配列を埋めます。 *インデックスに文字を入力することはどういう意味ですか*? 'FileReader'は[read(char \ [\])]を持つ' Reader'を拡張します(https://docs.oracle.com/javase/7/docs/api/java/io/Reader.html#read(char [])) 方法。 – OldCurmudgeon

+0

@ OldCurmudgeon私は配列がファイルabcからいっぱいであることを知っています。ファイルabcには文字があり、read()メソッドは文字を引き出します。その後、readメソッドは文字をすべてのインデックスで順番に保持します。ここでは、インデックスの量は行番号のfile.lenth()メソッドによって決定されています。 2私のコードに従って。 – ABC

関連する問題