Итак, я создаю базу данных для игр для школьного проекта с использованием файла произвольного доступа. Я почти уверен, что у меня есть основы, и я перечитываю код миллион раз, я просто не могу найти, что не так, правильно прочитав байты случайного доступа. Я вычислил значения для каждого слова несколько раз, чтобы удвоить проверить тоже ...java.io.EOFException Брошено каждый раз, когда я читал RandomAccessFile
Мой главный метод:
public static void main(String[] args) {
RAFProcessing raf = new RAFProcessing();
try {
RandomAccessFile file = new RandomAccessFile(new File(
"src/FirstTry/database.txt"), "rw");
raf.writeRecord("Fifa", "EA", 2001, file);
raf.readRecord(file);
file.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Запись данных + байт между ними:
public void writeRecord(String gameName, String publisher, int year, RandomAccessFile file) throws IOException
{
Long fileSize = file.length();
file.seek(fileSize);
file.writeUTF(gameName);
for(int loop=0; loop<20-gameName.length(); loop++)
{
file.writeByte(20);
}
file.writeUTF(publisher);
for(int loop=0; loop<20-publisher.length(); loop++)
{
file.writeByte(20);
}
file.writeInt(year);
}
Долина размер 48 (22 + 22 + 4)
читаешь г Данные и Б
public void readRecord(RandomAccessFile file) throws IOException
{
file.seek(0);
String wholeRecord ="";
int totalRecord = (int) (file.length()/SIZE);
System.out.print(totalRecord);
String gameName, publisher;
int year;
for(int loop=0; loop< totalRecord; loop++)
{
gameName = file.readUTF();
for(int innerloop=0; innerloop<20-gameName.length(); loop++)
{
file.readByte();
}
publisher = file.readUTF();
for(int innerloop=0; innerloop<20-publisher.length(); loop++)
{
file.readByte();
}
year = file.readInt();
wholeRecord += "|Game Name:" + gameName + " | Publisher: " + publisher + " | Year Published: " + year + "\n";
}
System.out.println(wholeRecord);
}
Все, что находится в каталоге 'src', будет недоступно при экспорте вашей программы. В большинстве IDE они будут включены как встроенные ресурсы в файл Jar приложений, что делает их только для чтения ... Если вам нужен доступ для чтения/записи к файлу, вам нужно поместить файл во внешнее местоположение (за пределами из Jar) – MadProgrammer
@MadProgrammer Я переместил database.txt за пределы папки src и по-прежнему получаю ту же проблему –