Reputation: 1221
So I have the following read and write file program for an Array. How would the following look like for an ArrayList? I am having trouble with the syntax. I know an ArrayList would be like that: private ArrayList prod list = new ArrayList(); BUt how would the read/write IO syntax be? Thank you.
static ActionProduct[] prodlist = new ActionProduct[50];
static String filename = System.getProperty("user.dir") + "\\src\\product.txt";
static int pIndex=0;
public static void readFile() throws IOException {
// input file must be supplied in the first argument
InputStream istream;
if (filename.length() > 0) {
File inputFile = new File(filename);
istream = new FileInputStream(inputFile);
} else {
// if no filename, use standard input stream
istream = System.in;
}
// use a buffered reader for line-at-a-time
// reading
BufferedReader lineReader;
lineReader = new BufferedReader(new InputStreamReader(istream));
// read one line at a time
String line;
while ((line = lineReader.readLine()) != null) {
StringTokenizer tokens = new StringTokenizer(line, "\t");
// String tmp = tokens.nextToken();
// System.out.println("token " + tmp);
prodlist[pIndex] = new ActionProduct();
String category = prodlist[pIndex].getCategory();
category = tokens.nextToken();
System.out.println("got category " +category);
int item = prodlist[pIndex].getItem();
item = Integer.parseInt(tokens.nextToken());
String name = prodlist[pIndex].getName();
System.out.println("got name " +name);
double price = prodlist[pIndex].getPrice();
price = Double.parseDouble(tokens.nextToken());
int units = prodlist[pIndex].getUnits();
units = Integer.parseInt(tokens.nextToken());
pIndex++;
}
}
Upvotes: 0
Views: 310
Reputation: 23265
Replace this:
static ActionProduct[] prodlist = new ActionProduct[50];
with
static List<ActionProduct> prodlist = new ArrayList<ActionProduct>();
then this:
prodlist[pIndex] = new ActionProduct();
with
ActionProduct p = new ActionProduct();
prodlist.add(p);
Finally, replace all uses of prodlist[pIndex]
with p
, then get rid of pIndex
everywhere else.
Upvotes: 2