2017-06-21 1 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); 
     } 

Hier in Zeile 2 sehen wir, dass ch-Array gerade die Gesamtzahl der Indizes einleitet. Und im gesamten Code sehen wir keine Zuordnung von Daten in seinen Speicherindizes. Aber wir finden auch, dass die For-each-Schleife Daten aus der Variablen ch extrahiert. Wie ist es möglich???Woher bezieht dieses Char-Array seine Daten?

Hinweis: Die abc.txt Datei enthält Zeichendaten

+0

in Zeile 5 gibt es 'ch.length' Zeichen aus der' abc.txt' Datei gelesen und in den char-Array, wie es als Parameter 'fw.read geben wird()' –

+2

„Und in den ganzen Code sehen wir keine Zuordnung von Daten in seinen Speicherindizes "===>' fw.read (ch); '<=== Da ist es. –

+5

Beachten Sie, dass dies immer noch schrecklicher Code ist: 1) Es nimmt an, dass es ein einzelnes Byte pro Zeichen gibt. 2) Es wird angenommen, dass die Datei in der Systemstandardkodierung ist. 3) Es nimmt an, dass sich die Größe der Datei nicht ändert. 4) Es wird vorausgesetzt, dass ein einzelner Aufruf von 'read' die gesamten Daten liest. 5) Es schließt den Leser nicht. –

Antwort

0

Ich werde den Code erklären lassen.

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

das ist cool. Aber wir sehen gerade, dass fw.read (ch) etwas tut. Aber wir sehen nicht, wie Zeichen in Indizes eingegeben werden. – ABC

+0

@ Md.MahadiHossain - die 'read' Methode füllt das Array mit Daten aus der Datei. Was meinst du mit * Eingabe von Zeichen in Indizes *? 'FileReader' erweitert' Reader' um das [read (char \ [\])] (https://docs.oracle.com/javase/7/docs/api/java/io/Reader.html#read (char [])) Methode. – OldCurmudgeon

+0

@ OldCurmudgeon Ich weiß, dass das Array aus der Datei abc gefüllt wird. Es gibt Zeichen in der Datei abc und die read() -Methode zieht Zeichen, danach speichert die read-Methode die Zeichen nacheinander in allen Indizes, wobei der Indexbetrag durch die file.lenth() -Methode in der Zeilennummer bestimmt wurde 2 nach meinem Code. – ABC

Verwandte Themen