根据返回的哈希在文件访问中实现读取和写入对象,在读写链时遇到错误EOFException。
我的写作方法就是这样。
private void escribirCadena( RandomAccessFile archivo, String cadena )throws IOException
{
StringBuffer bufer = null;
if ( cadena != null )bufer = new StringBuffer( cadena );
bufer.setLength( 6 );
archivo.writeChars( bufer.toString() );
}
我的注册阅读方法是
public Persona obtenerRegistro( int i ) throws IOException{
if(i >= 0 && i < NumeroRegistros) {
archivo.seek(i * Persona.TAMANIO);
return new Persona(leerCadena(archivo),leerCadena(archivo));
//return leerCadena(archivo);
} else {
System.out.println("\nNúmero de registro fuera de límites.");
return null;
}
}
private String leerCadena( RandomAccessFile archivo ) throws IOException
{
char nombre[] = new char[6], temp;
for ( int cuenta = 0; cuenta < nombre.length; cuenta++ ) {
temp = archivo.readChar();
nombre[ cuenta ] = temp;
}
return new String( nombre ).replace( '\0', ' ' );
}
我使用具有String类型的两个属性的其他数据对象
我为方法leerCadena
,第temp = archivo.readChar();
行
谢谢
答案 0 :(得分:0)
我相信你正在阅读超出它容量的文件。您应该只读到达到文件结束(EOF)。检查JavaDocs以查找用于读取文件的类。它会告诉你“文件结束”。
答案 1 :(得分:0)
不是因为你超出了人数吗? :
if(i >= 0 && i <= NumeroRegistros) {
应该是:
if(i >= 0 && i < NumeroRegistros) {
除此之外,还有其他一些问题。就像StringBuffer被设置为长度10但在写入之前它被设置为30。