Я пытаюсь внедрить систему базы данных текстовых файлов через файл CSV в Java GUI, я создал GUI, базу данных, методы, необходимые для импорта и экспорта в файл, и метод для преобразования информации в 2DArray из файла CSV. Я пытаюсь создать простое хранилище паролей, но всякий раз, когда я пытаюсь добавить что-либо в файл, я получаю сообщение об ошибке:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at TextFileDatabase.readDatabase(TextFileDatabase.java:93)
at PasswordVault.<init>(PasswordVault.java:97)
at PasswordVault.main(PasswordVault.java:22)
Метод, возвращающий ошибку, - readDatabase (), и он следует:
public static String[][] readDatabase()
{
try
{
kb = new Scanner(database);
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
//since the size of the database is unknown, we'll first work in a temporary 2D arraylist that can dynamically change its size
ArrayList<String[]> tempDatabase = new ArrayList<String[]>();
while(kb.hasNext())
{
String tempLine = kb.nextLine(); //reads the first/next line of the database
String[] tempData = tempLine.split(","); //gets that result as a string, splits it up into an array based on commas
tempDatabase.add(tempData); //adds the string array to the arraylist
}
//at this point, the while loop should have traversed through the entire file
String[][] output = new String[tempDatabase.size()][3];
//this is the string we'll return
//the column size is the size of the tempDatabase arraylist because thats the number of passwords we have stored
//the row size is three because each row is an 1) app, 2) password, 3) description
//converts the ArrayList to the actual output array
for(int x=0; x<output.length; x++)
{
for(int y=0; y<3; y++)
{
//This is line 93 in TextFileDatabase()
output[x][y] = tempDatabase.get(x)[y];
}
}
return output;
}
и он указывает на этот раздел кода в моем классе PasswordVault ()
//This is line 97
String[][] data = TextFileDatabase.readDatabase();
//This will convert the information from the 2DArray made from the file into a table model to use in the GUI
for(int a = 0; a < data.length; a++)
{
String[] row = new String[data[a].length];
for(int b = 0; b < data[a].length; b++)
{
row[b] = data[a][b];
}
tableModel.addRow(row);
}
И последняя строка, к которой обращается ошибка, это просто строка, вызывающая PasswordVault () конструктор
new PasswordVault();