Java EOFEException随机访问文件读取
根据返回的散列实现文件访问中的读写对象,我在读写链时遇到一个错误EOFEException 我的写作方法是这样的Java EOFEException随机访问文件读取,java,Java,根据返回的散列实现文件访问中的读写对象,我在读写链时遇到一个错误EOFEException 我的写作方法是这样的 private void escribirCadena( RandomAccessFile archivo, String cadena )throws IOException { StringBuffer bufer = null; if ( cadena != null )bufer = new StringBuffer( cadena ); bufer.se
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', ' ' );
}
public Persona obtenerRegistro(inti)抛出IOException{
如果(i>=0&&i
我使用两个String类型属性的附加数据对象
我为方法leerCadena
标记错误,行temp=archivo.readChar()代码>
谢谢我相信您正在阅读超出容量的文件。您只能在到达文件结尾(EOF)之前读取。检查JavaDocs中用于读取文件的类。它会告诉你“文件结束”的情况。不是因为你的人数不够吗
if(i >= 0 && i <= NumeroRegistros) {
if(i>=0&&i=0&&i
除此之外,还有一些其他问题。比如StringBuffer被设置为长度10,但就在写入之前,它被设置为30。修改您建议的内容,错误仍然存在。修改上面的代码,以便您可以检查文件是否足够大,可以包含numeroRegistros条目?您真的存储了条目吗?@zbynek-vyskovsky-kvr000 probe only插入记录并使其正常化,但当我想从文件位置获取数据时,获取错误在我身上哪里会出错?
if(i >= 0 && i < NumeroRegistros) {