How Can I Reset The File Pointer to the Beginning of the File in Java?

前端 未结 10 1470
孤城傲影
孤城傲影 2021-02-19 20:17

I am writing a program in Java that requires me to compare the data in 2 files. I have to check each line from file 1 against each line of file 2 and if I find a match write the

10条回答
  •  南旧
    南旧 (楼主)
    2021-02-19 20:53

    If you just want to reset the file pointer to the top of the file, reinitialize your buffer reader. I assume that you are also using the try and catch block to check for end of the file.

    `//To read from a file. 
          BufferedReader read_data_file = new BufferedReader(new FileReader("Datafile.dat"));'
    

    Let's say this is how you have your buffer reader defined. Now, this is how you can check for end of file=null.

    boolean has_data= true;
    
    while(has_data)
         {    
          try
         {
         record = read_data_file.readLine();
         delimit = new StringTokenizer(record, ",");
         //Reading the input in STRING format. 
         cus_ID = delimit.nextToken();
         cus_name = delimit.nextToken();'
          //And keep grabbing the data and save it in appropriate fields. 
         }
    catch (NullPointerException e)
         {
          System.out.println("\nEnd of Data File... Total "+ num_of_records 
                           + " records were printed. \n \n");
          has_data = false; //To exit the loop. 
          /*
            ------> This point is the trouble maker. Your file pointer is pointing at the end of the line. 
         -->If you want to again read all the data FROM THE TOP WITHOUT   RECOMPILING: 
          Do this--> Reset the buffer reader to the top of the file.
          */                      
          read_data_file = new BufferedReader(new FileReader(new File("datafile.dat")));
    }
    

    By reinitializing the buffer reader you will reset the file reader mark/pointer to the top of the file and you won't have to recompile the file to set the file reader marker/pointer to beginning/top of the file. You need to reinitialize the buffer reader only if you don't want to recompile and pull off the same stunt in the same run. But if you wish to just run loop one time then you don't have to all this, by simply recompiling the file, the file reader marker will be set to the top/beginning of the file.

提交回复
热议问题