StringIndexOutOfBoundsException

Eu estou tendo dificuldade em ler um texto que está em binário, variando 0 à 255. Eu quero que ele pare de ler quando o for encontrada a sequencia (26 e 0 na tabela asc). porém, quando eu faço isso dah o seguinte erro:
Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 22
at java.lang.String.charAt(String.java:686)
at nauticos.ReadingMethods.readHeader(ReadingMethods.java:63)
at nauticos.ReadingMethods.readHeaderLine(ReadingMethods.java:59)
at nauticos.Main.main(Main.java:45)
Java Result: 1

public void readHeaderLine (RandomAccessFile fis) throws IOException {
        String thisString="";
        char thisChar = (char) fis.read();
        while ((thisChar != 13) && (thisChar != 0)) {
            if (thisChar!=10){
                thisString=thisString+thisChar;
            }
            thisChar = (char) fis.read();
        }
        System.out.println(thisString);
        readHeader(fis, thisString);
    }

   public void readHeader (RandomAccessFile fis, String s) throws IOException{
       while (s.charAt(s.length())!=26) // dah erro nessa linha
           readHeaderLine(fis);
          
       }
      
   }

Alguém pode me ajudar???

Já tentou usar

s.charAt(s.length()-1)!=26

ou ainda

null != s.charAt(s.length()-1)

Já, nem deu certo…
e eu não entendi a sua segunda possibilidade
:cry:

indexoutofbound é pq o item não existe a posição naquela string, tipo:

string = “carro”

length() = 5

c = 0
a = 1
r = 2
r = 3
o = 4

ou seja, se buscar a posição 5 ela não existe

Faça assim meu querido

 public void readHeader (RandomAccessFile fis, String s) throws IOException{   
       while (s.charAt(s.length()-1)!=26) //esqueceu que a indexação começa do 0
           readHeaderLine(fis);   
             
       }   
         
   }  

Abraço!

Gente, eu já coloquei o -1 e mesmo assim tah dando erro!!!

Faz um System.out.println(str.length()) e ve o tamanho da sua string.