2015-04-10 1 views
1

Я хочу прочитать файл с номерами Account.txt И хочу сохранить каждую строку в строке массива. Пример. файл имеет 3 строки 123\n234\n456. А массив String a имеет 3 размера, а 1-й массив должен иметь 123, second-> 234 и 3rd-> 456. Но он не работает. Спасибо заранее.Ошибка при чтении файла

package javaapplication10; 

import java.util.Scanner; 
import java.io.*; 
public class JavaApplication10 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     String temp = " "; 
     FileWriter fw = null; 
     FileReader fr = null; 
     int a=0; 
     while(true) 
     { 
      System.out.println("1) Input new "); 
      System.out.println("2) display "); 
      System.out.println("3) Exit"); 
      System.out.print(" Enter your choice : "); 
      int choice = input.nextInt(); 
      switch(choice) 
      { 
       case 1: System.out.println(" Enter new Account number : "); 
         temp = input.next(); 
         try 
         { 
          fw = new FileWriter("Account.txt",true); 
          fw.write(temp); 
          fw.write(System.getProperty("line.separator"  )); 
          fw.flush(); 
         } 
         catch(IOException ex) 
         { 
         ex.printStackTrace(); 
        } 
        catch(Exception ex) 
        { 
         ex.printStackTrace(); 
        } 
        finally 
        { 
         if(fw!=null) 
         { 
          try 
          { 
           fw.close(); 
          } 
          catch(IOException ex) 
          { 
           ex.printStackTrace(); 
          } 

         } 
        } 
        break; 
      case 2: try 
        { 
         fr = new FileReader("Account.txt"); 
         int i = 0; 
         int line =0; 
         while((i = fr.read()) != -1) 
         { 
          if(i == '\n') 
           line++; 
         } 
         String s[] = new String[line]; 
         a=0; 
         i=0; 
         System.out.println("2"); 
         for(int j=0; j<line;j++) 
         { 
          while((i = fr.read())!=10) 
          { 
           if(i!=-1) 
           { 
            System.out.println(String.valueOf(i)); 
            s[j] = s[j].concat(String.valueOf(i)); 
           } 
           else 
            break; 

          } 
          System.out.println(s[j]); 
         } 

        } 
        catch(FileNotFoundException ex) 
        { 
         ex.printStackTrace(); 
        } 
        catch(IOException ex) 
        { 
         ex.printStackTrace(); 
        } 
        finally 
        { 
         if(fr!=null) 
         { 
          try 
          { 
           fr.close(); 
          } 
          catch(IOException ex) 
          { 
           ex.printStackTrace(); 
          } 
          fr = null; 
         } 

        } 
        break; 
      case 3: System.exit(0); 
      default: System.out.println(" Wrong Choice !!!"); 
     } 
    } 
} 


} 
+0

Какая ошибка? Добавьте стек. – Jens

+0

Значение файла не сохраняется в массиве String. –

+1

Вы читаете весь файл, чтобы получить количество строк, а затем вы пытаетесь читать из того же «FileReader», чтобы читать дальше ... Как читать больше, если вы уже читаете _everything_? – Tom

ответ

2

Вы пытаетесь прочитать ваш файл дважды. После первого цикла:

Ваш файл-указатель находится в конце файла. Итак, во втором цикле у вас больше нет контента для чтения.

+0

Но как инициализировать массив строк. Потому что мне нужно указать размер массива. –

+0

После того, как вы подсчитали строки, вы можете использовать метод 'reset()' для сброса указателя файла, и вы можете снова прочитать файл. Или используйте более динамический объект, например 'ArrayList' – Jens

 Смежные вопросы

  • Нет связанных вопросов^_^