2013-11-20 1 views
0

Я кулак по этому коду в своем классе java ... но все же я не могу понять, как этот код читает файл .. особенно часть цикла while. .lecturer сказал, что если мы не будем реализовывать цикл .. этот код читает только 1-ю букву файла ....Может ли кто-нибудь объяснить мне, как читать файл в java. что означает -1? нет никаких чисел в файле, который я хочу прочитать .. confused :(

import java.io.FileReader; 

public class NewClass { 
    public static void main(String[] args) { 
     try{ 

      FileReader f1 = new FileReader("E:\\SOFTWARE setups\\Apache\\new.txt"); 
       while (true) { 
       int x = f1.read(); 
       if (x == -1) { 
        break; 
       } 
       char y = (char) x; 
       System.out.print(y); 
      } 
+1

«... или ** - 1, если конец потока достигнут **». См. [Docs] (http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html#read()). – Maroun

ответ

2

documentation с -.

читает один символ

Возвращает прочитанный символ или -1, если конец потока достигнут.

Итак, для чтения всего содержимого вашего файла вам нужен цикл for. Основной стратегией, которой придерживается ваш код, является чтение одного символа за раз, проверьте, равно ли ему -1 (чтобы узнать, достигнут ли конец файла), а если нет, распечатайте его на консоли.

Если вы не хотите, чтобы написать цикл, как это и прочитать все содержимое, то вы можете использовать некоторые утилиты библиотеки как Apache Commons -

File file = new File("E:\\SOFTWARE setups\\Apache\\new.txt"); 
String content = FileUtils.readFileToString(file); 
System.out.print(content); 
0

прочитанного() метод считывает один символ, его возвращает либо целочисленное значение символа, либо -1. Возвращает -1, если конец файла достигнут.

0

метод read() считывает одиночный символ, возвращает -1, когда доходит до конца файла.

Хотя петля может быть оптимизирована и может быть записана как показано ниже

int x; 
while ((x = f1.read()) !=-1) { 
    System.out.print((char)x); 
}