Solved

reading file block by block

Posted on 2007-03-28
10
464 Views
Last Modified: 2010-05-18
hi guys,

in delphi or C you can read file block by block to high speed. in java how can i read a huge file with 1024*64 bytes block?

thanks.
0
Comment
Question by:janavar
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
10 Comments
 
LVL 3

Expert Comment

by:chandru_in
ID: 18807066
If you intend to use the file sequentially, you can use any InputStream subclass.  I'd recommend using BufferedInputStream.

http://java.sun.com/javase/6/docs/api/java/io/BufferedInputStream.html

If you need random access to files, use RandomAccessFile.

http://java.sun.com/javase/6/docs/api/java/io/RandomAccessFile.html
0
 

Author Comment

by:janavar
ID: 18807724
i am reading data like this;
FileInputStream fis = new FileInputStream(fileName);

int readLen = fis.read(buffer, 0, BUF_LEN)
while (readLen > 0) {
.....
readLen = fis.read(buffer, 0, BUF_LEN)
}

when i set buffer length 62 or 1024*64 it processes the file with the same duration. why? should it be shorter when i use a large buffer? i
0
 
LVL 24

Expert Comment

by:sciuriware
ID: 18808425
When your buffer is a multiple of the physical disk blocks it is always a bit faster,
but it makes no sense to go over 64Kb as you mentioned: few difference.
;JOOP!
0
Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

 

Author Comment

by:janavar
ID: 18814460
i wonder if how these are equal speed  fis.read() and fis.reaf(buf, 0, 1024)?  if so, FileInputStream already buffers?
fis.read() means goto disk and read a byte and fis.reaf(buf, 0, 1024) means goto disk and read 1024 byte once? and so  fis.reaf(buf, 0, 1024)  must be faster then fis.read()?

 
0
 
LVL 24

Accepted Solution

by:
sciuriware earned 50 total points
ID: 18814727
It is impossible to read 1 byte from a disk; the disk driver will always read blocks.
JAVA is smart enough to read buffered, but a BufferedReader makes pre-processing
possible. That is not of interest with binary data.

;JOOP!
0
 
LVL 30

Expert Comment

by:Mayank S
ID: 18827679
>> fis.reaf(buf, 0, 1024)  must be faster then fis.read()?

No, they need not take the same amount of time to execute. Though it should be faster than 1024 times fis.read ()
0
 

Author Comment

by:janavar
ID: 18855823
so, if they take  the same duration, is there any solution to faster this? i mean what is the most fast method to read a file?
0
 
LVL 24

Expert Comment

by:sciuriware
ID: 18855827
Compare it to copying it with a filemanager: that's the limit.

;JOOP!
0
 

Author Comment

by:janavar
ID: 19264840
thanks guys
0
 
LVL 24

Expert Comment

by:sciuriware
ID: 19264901
:)
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.

691 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question