2015-12-15 50 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