[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: BINARY FILES
- Subject: Re: BINARY FILES
- From: mole6e23(at)hotmail.com (Todd Clements)
- Date: Fri, 13 Oct 2000 10:41:40 -0700
- Newsgroups: comp.lang.idl-pvwave
- Organization: UCSD
- References: <8s7dbs$rci$1@nnrp1.deja.com>
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:21703
mohamed_nur@my-deja.com wrote:
>I've been dealing with binary files and every case i had to know before
>hand the dimensions of the array to setup an IDL variable of the said
>dimesions and read the unformatted data into.
>
>But is it possible or is there a method (in IDL 5.2/5.3) to read it in
>with no knowledge of the dimensions of the array.
I always use the fstat routine, which gets a bunch of information about
the file, but the only one I ever use is the size field:
;-----
openr,lun,'file.dat',/get_lun
stat = fstat( lun )
array = fltarr( stat.size )
readu,lun,array
free_lun, lun
;----
Alternatively, if you're on UNIX, you can use the /nostdio keyword which
lets you just read willy nilly until the end of the file, and then get the
transfer count from the readu procedure. It's not a good way of doing
things, in my opinion, but it works:
;; Allocate a much bigger array than you need
array = fltarr( 1e5 )
openr,lun,'file.dat',/get_lun,/nostdio
readu,lun,array,transfer_count=count
array = temporary(array)[0:count-1]
free_lun, lun
Hope this helps,
Todd