Avatar billede flamsk Nybegynder
02. maj 2006 - 00:08 Der er 12 kommentarer

inputstream til byte[]

hvordan laver jeg en inputstream om til et byte[]?
Avatar billede arne_v Ekspert
02. maj 2006 - 00:41 #1
mener du hvordan du læser ind fra en InputStream til et byte array ?

n = is.read(b, 0, b.length);

er en mulighed
Avatar billede flamsk Nybegynder
02. maj 2006 - 00:43 #2
altså, jeg har en urlconnection til en ftp fil,
denne fil vil jeg gerne indlæse til et byte[] hvorefter jeg kan manipulere data i filen
men jeg ved ikke hvordan jeg kan lave et byte[] når jeg ikke kender størrelsen af filen
Avatar billede arne_v Ekspert
02. maj 2006 - 00:46 #3
hvis du ikke behøver alle data i memory samtidigt, så kan du bruge følgende
konstruktion:

        byte[] b = new byte[10000];
        int n;
        while ((n = is.read(b, 0, b.length)) > 0) {
            // process de første n bytes af b
        }
Avatar billede flamsk Nybegynder
02. maj 2006 - 00:47 #4
jeg skal helst have det hele i memory, jeg skal nemlig inverter indeholdet, så
hvis der står følgende i filen

asdf

skal der bagefter stå

fdsa
Avatar billede arne_v Ekspert
02. maj 2006 - 00:51 #5
kan du tillade dig at antage en maksimum størrelse ?

hvis ja:

byte[b] = new byte[MAX_N];
int n = is.read(b, 0, b.length);
for(int i = 0; i < n/2; i++) {
    byte tmp = b[i];
    b[i] = b[b.length - 1 - i];
    b[b.length - 1 - i] = tmp;
}
os.write(b, 0, n);
Avatar billede flamsk Nybegynder
02. maj 2006 - 00:55 #6
kan det lade sig gøre uden en max størrelse ?
Avatar billede arne_v Ekspert
02. maj 2006 - 01:00 #7
ikke rigtigt

forslag til workaround:

du kan prøve med 1 MB og læse ind i det
hvis der er mere så allokerer du et nyt på 2 MB, kopierere de 1 MB til det og læser ind i det fra position 1 MB
hvis der er mere så allokerer du et nyt på 3 MB, ...
Avatar billede arne_v Ekspert
02. maj 2006 - 01:01 #8
du har ingen mulighed for at få længden ?
Avatar billede flamsk Nybegynder
02. maj 2006 - 01:02 #9
nej desværre
Avatar billede arne_v Ekspert
02. maj 2006 - 01:09 #10
så må du nok igang med workarounden ...
Avatar billede snoop_one Nybegynder
02. maj 2006 - 10:15 #11
Der findes forskellige pakker til ftp i Java. Jeg har hørt at understående skulle være meget god,

http://www.enterprisedt.com/products/edtftpj/documentation.html

Jeg har ikke selv prøvet at lege med den endnu :) da jeg ikke har haft brug for ftp funktionalitet.

Men ifl. dens API (FTPClient.java) skulle den have en metode get() som kan gøre det du efterlyser.

Det er også et alternativ - håber at du kan bruge det.
Avatar billede arne_v Ekspert
19. juni 2006 - 01:13 #12
flamsk>

kommet videre ?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester