Как найти строку в RandomAccessFile с этим кодом? - PullRequest
1 голос
/ 09 декабря 2011

Я пытаюсь сделать небольшой метод поиска, и до сих пор у меня есть тот, который только ищет типы int, я задавался вопросом, возможно ли как-то реализовать этот метод для поиска строк?

//Searches only ints
public void buscarCliente_Codigo(int cod) throws IOException{ /*cod is for the input
for eg. a textfield input which im using*/

try{
RandomAccessFile f = new RandomAccessFile("Clientes.txt","rw"); //.txt File name
boolean encontrado=false;
registroExistente = false ;
long bytes = 0;
do{
codigo = f.readInt();
nombre = leerNombre(f);    //Reads String
numTelefono = leerNumTelefono(f);
direccion = leerDireccion(f);
seguro = leerSeguro(f);
nacionalidad = leerNacionalidad(f);
cedula = leerCedula(f);
if(cod==codigo){
iCodigoBusqueda = codigo;
encontrado=true;
registroExistente = true;
break;
}else{
iCodigoBusqueda = 0;  //Type int
registroExistente = false;
}
bytes +=1;//Changes
f.seek(bytes);
}
while(bytes<f.length());
f.close();
}  catch (Exception e){
registroExistente = false;
JOptionPane.showMessageDialog(null,"Data not found");

}
}

После этого я просто кодирую пару .getText, и у меня есть прекрасный механизм поиска, который работает только с числом, но я действительно хочу метод, который ищет строки, поэтому я сделал паруtweeks:

**enter code here**
public void buscarCliente_Nombre(String nom) throws IOException{ //change to String

try{
RandomAccessFile f = new RandomAccessFile("Clientes.txt","rw");
boolean encontrado=false;
registroExistente = false ;
long bytes = 0;
do{
codigo = f.readInt();
nombre = leerNombre(f);
numTelefono = leerNumTelefono(f);
direccion = leerDireccion(f);
seguro = leerSeguro(f);
nacionalidad = leerNacionalidad(f);
cedula = leerCedula(f);
if(nom.equals(nombre)){
iNombreString = nombre;
encontrado=true;
registroExistente = true;
break;
}else{
iNombreString = ""; //String type
registroExistente = false;
}
bytes +=1;//cambios
f.seek(bytes);
}
while(bytes<f.length());
f.close();
}  catch (Exception e){
registroExistente = false;
JOptionPane.showMessageDialog(null,"Data not found");

}

}

Это не работает, это дает мне исключение.

Так есть ли этот код для Strings_?

спасибо

1 Ответ

0 голосов
/ 29 декабря 2011

Вы можете найти подстроки в строке? да.

Честно говоря, я понятия не имею, что вы там пытаетесь сделать, и я знаю, что такое "RandomAccessFile", но если это обычный файл, почему бы не прочитать его как один.

//Read the file... I don't bother to show how...
string = //the data of the file...
if(string.contains("Substring")) {
System.out.println("Substring could be found");
}
else {
System.out.println("Substring could not be found");
}

Если вы пытаетесь прочитать что-то вроде xml, я бы порекомендовал

if(string.contains("Substring=\"")) {
int pos = string.indexOf("Substring=\"")+"Substring=\"".length();
return string.substring(pos,string.indexOf("\"",pos));
}
...