2015-12-15 51 views
1

在學習java並且正在學習Streams(字節和字符)的時候,我寫了這個代碼,它將一個數組寫入.txt,然後讀取並打印之前寫入的值。編譯當我有錯的,說無法找出Java中的這個RandomAccessFile代碼的錯誤

method readInt in class RandomAccessFile cannot be applied to given types; 
d = rand.readInt(4*i); 

required: no arguments 
foung: int 
reason: actual and formal argument lists differ int length 

繼承人的代碼行22:

import java.io.*; 

     class Prueba7 
     { 
      public static void main(String args[]) 
      { 
       int array[] = {2,5,3,6,4,7,4,8}; 
       int d; 


       try(RandomAccessFile rand = new RandomAccessFile("prueba7.txt", "rw")) 
       { 
     for(int i: array) 
       { 
        System.out.println("Writing: " +i); 
        rand.writeInt(i); 
       }   

       for(int i = 0; i < array.length; i++) 
       { 

        d = rand.readInt(4*i); 
        System.out.println("Reading file: "); 
        System.out.print(d); 
       } 
       } 
       catch(IOException exc) 
       { 
        System.out.println("Exception: " +exc); 
       } 
      } 
     } 

當我讀到的錯誤,試圖刪除的readInt的說法,但我有一個例外,而不是預期的產出。

import java.io.*; 

    class Prueba7 
    { 
     public static void main(String args[]) 
     { 
      int array[] = {2,5,3,6,4,7,4,8}; 
      int d; 


      try(RandomAccessFile rand = new RandomAccessFile("prueba7.txt", "rw")) 
      { 
    for(int i: array) 
      { 
       System.out.println("Writing: " +i); 
       rand.writeInt(i); 
      }   

      for(int i = 0; i < array.length; i++) 
      { 
       d = rand.readInt(); 
       System.out.println("Reading file: "); 
       System.out.print(d); 
      } 
      } 
      catch(IOException exc) 
      { 
       System.out.println("Exception: " +exc); 
      } 
     } 
    } 

這個我得到這樣的輸出:

writing: 2 
writing: 5 
writing: 3 
writing: 6 
writing: 4 
writing: 7 
writing: 4 
writing: 8 
Exception: java.io.EOFException 

這是輸出我想:

writing: 2 
writing: 5 
writing: 3 
writing: 6 
writing: 4 
writing: 7 
writing: 4 
writing: 8 
Reading: 2 5 3 6 4 7 4 8 
+0

的readInt()絕對不採取ARGS按的Javadoc。我還沒有確認,但@ dkatzel的答案似乎是在正確的道路上。 –

回答

2

你寫完文件後,您必須將文件指針重置回到開始。

..//write code for loop 
rand.seek(0) 

..//read code for loop 
+0

謝謝,我看了我的代碼,並且實際上我沒有使用seek(),所以我使用了這個。 rand.seek(4 * I); \t \t \t d = rand.readInt(); System.out.print(d +「」);其中, – ravelinx