Reading a file in reverse order --- How?
- To: mathgroup at smc.vnet.net
 - Subject: [mg129790] Reading a file in reverse order --- How?
 - From: Virgil Stokes <vs at it.uu.se>
 - Date: Thu, 14 Feb 2013 02:08:38 -0500 (EST)
 - Delivered-to: l-mathgroup@mail-archive0.wolfram.com
 - Delivered-to: l-mathgroup@wolfram.com
 - Delivered-to: mathgroup-newout@smc.vnet.net
 - Delivered-to: mathgroup-newsend@smc.vnet.net
 
Here is a very simple example of saving lists (writing to a file) and then 
reading the lists back in the same order as they were written.  The problem that 
I would like to get a solution to is how can the lists be *read in reverse 
order?* Thus, the first list saved would be the last list to be inputted.
Note, in general, the length of each list is the same and rather small; but, the 
number of lists written to the file can be rather large (n > 10,000), at least 
too large to keep all of them in memory.
fname = "testfile";
strm = OpenWrite[fname];
n = 3; (* In general, n could be very large *)
For[k = 1, k <= n, k++,
  (* Create list on each pass through this loop ... *)
  POt = {{k, k + 1}, {k + 2, k + 3}};
  (* Print[POt]; *)
  (* Save list to a file *)
  Write[strm, POt];
  ];
Close[strm];
(* Other processing performed... *)
(* Open file with lists *)
strm = OpenRead[fname];
(* Process, sequentially, each list that was saved *)
For[i = 1, i <= n, i++,
   PIn = Read[strm];
   (* Print[PIn]; *)
   (* Process PIn ... *)
   ];
Close[strm];