[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

reading file block by block

Posted on 2007-03-28
10
Medium Priority
?
466 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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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 200 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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

In this post we will learn different types of Android Layout and some basics of an Android App.
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
Suggested Courses

649 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