10. november 2010 - 12:00Der er
11 kommentarer og 1 løsning
Simpelt spørgsmål om while
Hvad er der galt med følgende statement:
while(byte b = file.read()){ }
Burde den ikke læse hele statementet som en samlet boolean? Og hvis det ikke er tilfældet, hvordan kan jeg så loope igennem en fil byte for byte? Ville gerne have noget i stil med:
while(byte b = file.read() && b != -1){ // code stuff here }
Nei. read metoden returnere en integer, som indeholder antal bytes som blev læst, den returnere ikke en byte. Derudover kan du ikke have et enkelt ligmed-tegn (=) inde i while-parantesen, da indeholdet skal resolves til en boolean.
Du skal gøre noget lignende dette:
byte[] buffer = new byte[1024]; while(file.read(buffer) > 0){ //Gjør noget med din buffer her. }
Hvis man skal bruge en byte ad gangen, kan det så betale sig? Jeg kom til at tænke på at flg. også kan lade sig gøre, men jeg ved ikke helt hvilken af de to der er bedst:
byte b = 0; while(b != -1) { // FileInputStream.read() returnerer -1 at end of file b = file.read(); // operation på b }
Hvilken af metoderne vil fungere bedst? Jeg er ikke så genial til java (har egentlig kun erfaring fra php), og jeg har sat mig for at forsøge at lave en mp3-decoder..
Sorry jeg ikke har lukket den her tråd. Jeg har opgivet Java efter at have erfaret at det er temmelig skidt til mp3 audio... og rettet min opmærksomhed C++ i stedet.
Masser af interessante og nyttige svar, men ultimativt blev mit problem ikke løst.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.