java: strpos()/indexOf() in Byte-Arrays?

Gast #1955617
Lesenswert?

Hallo,
in Strings kann man ja mit indexOf() bequem suchen.
Aber was macht man in Byte-Arrays?
Mit PHP kann man da strpos() verwenden, aber in Java?

Es ist zwar denkbar, sich ein Funktion zu schreiben,
aber die ist wahrscheinlich nicht geschwindigkeits optimiert.
1
static public int strpos(final byte[] s, int length,
2
  int start, final byte[] pat) {
3
if (0==length) length=s.length;
4
for (int i=start; i<=length-pat.length; i++) {
5
  int j;
6
  for (j=0; j<pat.length; j++) {
7
    if (s[i+j]!=pat[j]) break;
8
  }
9
  if (pat.length==j) return i; //gefunden
10
}
11
return -1; //nicht gefunden
12
}

Wie machen das die Profis?
Gast #1955752
Lesenswert?

>Bytes sind keine chars, daher macht ein "Strpos"/"indexOf" keinen Sinn.
Wuerde schon sagen, dass das Sinn macht. Warum sollte man nicht nach 
einem bestimmten "Zahlen-Muster" suchen duerfen?


>Was willst du den damit machen sind das wirklich "bytes"?
Siehe anderen Thread "Java-Servlet: Probleme beim File-Upload"

Ich moechte einen Post-Content nach dem Separator durchsuchen.
1
h2=request.getContentLength();
2
byte[] fs=new byte[h2];
3
int lfs;
4

5
ServletInputStream is=request.getInputStream();
6

7
lfs=0;
8
while ((h2=is.readLine(fs,lfs,fs.length-lfs))>0)
9
  {lfs+=h2;}
10
is.close();

Die professionellen Apache Jars (commons-fileupload-1.2.2.jar) 
funktionieren bei mir lokal wunderbar, aber auf meinem Webspace kriege 
ich sie nicht zum laufen. Also muss ich es von Hand machen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren