Implement a program to count number of lines and words in the file

Using a random access file, we can read from a file as well as write to the file. Reading and writing using the file input and output streams are a sequential process. Using a random access file, we can read or write at any position within the file. An object of the RandomAccessFile class can do the random file access. We can read/write bytes and all primitive types values to a file. RandomAccessFile can work with strings using its readUTF() and writeUTF() methods.
We create an instance of the RandomAccessFile class by specifying the file name and the access mode.

RandomAccessFile  raf = new RandomAccessFile("randomtest.txt", "rw");
A random access file has a file pointer that moves forward when we read data from it or write data to it. We can get the value of file pointer by using its getFilePointer( ) method. When we create an object of the RandomAccessFile class, the file pointer is set to zero. We can set the file pointer at a specific location in the file using the seek( ) method. 
The length( ) method of a RandomAccessFile returns the current length of the file. To read data from random file use read( ) method and to write data into random file use write( ) method.


The following program reads the file contents using RandomAccessFile and count the number of words and line. 


PROGRAM
import java.io.*;

class PerformTask
{
 void task()
 {
  char c;
  int words=1,lines=1,chars=0;
  try
  {
   RandomAccessFile ff = new RandomAccessFile("test.txt","r");
   while(ff.getFilePointer()<ff.length())
   {
    c = (char)ff.read();
    if(c ==' ')
     words++;
    else if(c=='\n')
    {
     lines++;
     words++;
    }
    else 
     chars++;
   }
   System.out.println("Words = "+words+" lines = "+lines);
  }
  catch(IOException ie){}
 }
 public static void main(String args[])
 {
  PerformTask p = new PerformTask();
  p.task();
 }
}
OUTPUT
C:\>javac PerformTask.java
C:\>java PerformTask
Words = 7 lines = 3

Comments

Popular posts from this blog

Program to define a class 'employee' with data members as empid, name and salary. Accept data for 5 objects using Array of objects and print it.

Define a class Student with four data members such as name, roll no.,sub1, and sub2. Define appropriate methods to initialize and display the values of data members. Also calculate total marks and percentage scored by student.

Program to draw Smiley in Applet