-
Reading a file for use
Hi, y'all!
I'm having some difficulty with storing information from my customer records. What happens after a transaction is the saving of the transaction in this format:
Code:
Customer No.
Cashier Code
yyyy/MM/dd HH.mm.ss (date and time stamped upon completion of transaction)
<Item Code>:<Quantity Bought>:<Price Subtotal>:HH.mm.ss:<Flag if item was cancelled>
Now, at the start of the program, I must load this file to determine the last customer number assigned, so that the next customer will have the next customer no. in the sequence. My problem is how to read the file so that I can determine that last customer number. I was planning on using StreamTokenizer, but I'm unsure of how I'm gonna use it this time. Maybe read the customer numbers in an array/vector of integers and all others in an array/vector of Strings?
Here's a sample of the customer_records.dat file:
Code:
1
A0701
2007/11/01 11.32.10
1:2:10:2007/11/01 11.30.56:
3:1:5:2007/11/01 11.28.33:
9:3:15:2007/11/01 11.12.08:Cancelled
2
B0702
2007/11/01 15.00.02
5:5:25:2007/11/01 14.58.02:
Thanks in advance for any suggestion/comment/advice! :)
-
I would use a BufferedReader. Look into it and if you need any help with it, post a reply
-
You can read the file backwards, until you find a number that is a normal Double num:
Code:
BufferedReader reader = new BufferedReader(new FileReader(
"cashTest"));
String s;
StringBuilder tmp = new StringBuilder();
while ((s = reader.readLine()) != null) {
tmp.append(s.toLowerCase() + "\n");
}
double num = 0.0;
String[] arr = tmp.toString().split("\n");
// read the array backwards, starting with the last line
for (int i = arr.length - 1; i >= 0; i--) {
try {
num = Double.valueOf(arr[i]);
// if the number cannot be converted to a Double, it would mean that it is one of the other lines
// if it can be converted, then break out of the for loop
break;
} catch (NumberFormatException e) {
// just for a test mess
System.out.println("Not on this line");
}
}
// just to make sure that the value we got was greater than 0
if (num > 0)
System.out.println(num);
else
System.out.println("No customer records found. A possible error occured");