Olá,
Estou enfrentando um problema aleatório que nunca tinha visto antes. Eu estou tentando buscar uma String dentro de um arquivo.
Eu tenho 2 arquivos, que obviamente não são iguais, porém o trecho neles que eu estou tentando buscar existem e são idênticos em ambos os arquivos. Calculei o hashCode() do trecho em ambos os arquivos em questão a são os mesmos.
O que acontece é que o primeiro arquivo A, minha operação de busca é feita com sucesso, sendo que na operação com o arquivo B, não consegue achar a string.
Então, eu achei que tinha algo haver com o modo que eu estava lendo o arquivo, por isso tentei 3 formas diferentes de ler o arquivo:
try {
FileReader rd = new FileReader(f);
char[] buf = new char[(int) f.length()];
rd.read(buf);
afterEdit = new String(buf);
rd.close();
} catch (IOException e) {
}
byte[] buffer = new byte[(int) new File(f.getAbsolutePath()).length()];
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(f));
bis.read(buffer);
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException ignored) {
}
}
}
afterEdit = new String(buffer);
FileInputStream fin = new FileInputStream(f);
OutputStream os = new ByteArrayOutputStream();
ZIP.copyInputStream(fin, os);
afterEdit = os.toString();
fin.close();
os.flush();
os.close();
f = Arquivo que vou ler
afterEdit = String que vai armazenar o conteúdo do arquivo
Em nenhum dos 3 procedimentos nenhuma exceção é lançada. Todos os 3 fazem exatamente a mesma coisa com sucesso.
Minha função para buscar a String no arquivo é a seguinte
cursor = afterEdit.toLowerCase().indexOf(toSearch.toLowerCase());
toSearch = a String que eu desejo buscar
Quando o arquivo A é lido, ele acha a String com sucesso. Mas no arquivo B, que também contém a String, não acha a String (retorno -1)
Não sei mais o que fazer, eu acho que deve ser a codificação do arquivo, algo do tipo. Não faço a mínima idéia do que pode ser. Segue em anexo os arquivos que funciona a busca, o que não funciona, e a String. Detalhe, a String também conta com aqueles espaços. No primeiro arquivo, ele acha a String por completa (incluindo os espaços), mas no outro arquivo não. Os espaços representam um papel importante no busca, portanto não podem ser ignorados ou removidos.
Agradeço de antemão, pois estou ficando biruta sem conseguir resolver esta situação.