Я прохожу inputStream и проверяю, есть ли у первого ввода файла правильные данные, но проблема в том, что если я не вызываю мой метод для чтения в файле снова, но он все еще содержит информацию из предыдущего сканирования файла. Есть ли в любом случае, я могу сказать это просто сбросить то, что было в inputStream и начать все сначала?
public static void readinfile(ArrayList<ArrayList> table,
int numberOfColumns,
ArrayList<String> header, ArrayList<ArrayList<String>> original,
ArrayList<String> sntypes, ArrayList<Integer> displaySize, ArrayList<String> writeOut, Scanner inputStream)
{
inputStream = null;
table.clear();
sntypes.clear();
displaySize.clear();
header.clear();
numberOfColumns = 0;
original.clear();
Scanner keyboard = new Scanner(System.in);
String fileName = keyboard.nextLine();
System.out.println(inputStream);
boolean done = false;
while(!done)
{
try
{
inputStream = new Scanner(new FileInputStream(fileName));
done = true;
header.clear();
}
catch(FileNotFoundException E)
{ System.out.println("Error in opening file ");
System.out.print("enter data file: ");
fileName = keyboard.nextLine();
}
}
// file is now open and input scanner attached
boolean done1 = false;
if ( inputStream.hasNextLine() ) {
String csvLine = inputStream.nextLine();
Scanner lineparse = new Scanner(csvLine);
lineparse.useDelimiter(",");
ArrayList<String> rowOne = new ArrayList<String>();
while (lineparse.hasNextLine()) {
String temp = lineparse.next();
String originaltemp = temp;
writeOut.add(temp);
temp = temp + "(" + (++numberOfColumns) + ")";
displaySize.add(temp.length());
if (temp.trim().substring(0, 2).equalsIgnoreCase("S ")
|| temp.trim().substring(0, 2).equalsIgnoreCase("N ")) {
rowOne.add(originaltemp);
header.add(temp.substring(2));
sntypes.add(temp.toUpperCase()
.substring(0,2).trim());
} else {
System.out
.println("Invalid file please enter a new file: ");
readinfile(table, numberOfColumns, header,
original, sntypes,displaySize, writeOut, inputStream );
}
}
// add table here it gives problem later on...
original.add(rowOne);
}
while (inputStream.hasNextLine())
{
String csvLine = inputStream.nextLine();
Scanner lineparse = new Scanner(csvLine);
lineparse.useDelimiter(",");
ArrayList row = new ArrayList();
int j = 0;
while (lineparse.hasNext()) {
String temp = lineparse.next().trim();
int sizeOfrow = temp.trim().length();
if (sizeOfrow > displaySize.get(j))
{
displaySize.set(j, sizeOfrow);
}
if (j < numberOfColumns && sntypes.get(j).equalsIgnoreCase("N")) {
try
{
if(temp.equalsIgnoreCase(""))
{
row.add(new Double(0.0));
}
else
{
row.add(new Double(temp.trim()));
}
}
catch (NumberFormatException E)
{
System.out.println("Opps there is a mistake I was expecting a number and I found: "+temp);
System.out.println("This row will be ignored");
break;
}
}
else
{
if(temp.equalsIgnoreCase(""))
{
row.add((" "));
}else
{
row.add(temp);
}
}
j++;
}
if (row.size() == numberOfColumns)
{
table.add(row);
}
}// close for while
inputStream.close();
}