Avatar billede netsrac Praktikant
09. september 2001 - 20:03 Der er 10 kommentarer og
2 løsninger

long til Dato / Tid ?

Bruger jeg getTime() på en ZipEntry får jeg en long retur, det er jo ikke så spændende, hvordan laver jeg den om til en dato / tidspunkt ?

http://java.sun.com/j2se/1.3/docs/api/java/util/zip/ZipEntry.html#getTime()

En anden ting, jeg har problemer med zip filer hvor en af de nedpakkede filer er med æøå, det kan den ikke finde ud af, hvordan retter man det ?
Avatar billede lbhansen Nybegynder
09. september 2001 - 20:09 #1
nu har jeg ikke pillet så meget med zip, men en Date har en konstruktør der modtager en long som argument.
Avatar billede netsrac Praktikant
09. september 2001 - 20:15 #2
Jada det er da lige hvad den har, smid lige et svar så får du lidt point for det :)
Avatar billede lbhansen Nybegynder
09. september 2001 - 20:17 #3
her er et svar:)
Avatar billede erikjacobsen Ekspert
09. september 2001 - 20:32 #4
Hvad er det der sker med øæå, Carsten ?
Avatar billede netsrac Praktikant
09. september 2001 - 20:41 #5
erikjacobsen >> Den del af mit problem stammer fra dette spm. http://www.eksperten.dk/spm/106943

Det der sker når jeg forsøger at hente bytes fra en ZipEntry med et navn som indeholder æ ø eller å er at jeg får 0 bytes tilbage, som om den ikke rigtig kan finde ud af æøå.

Vil blive rigtig glad hvis du kender løsningen på det ?
Avatar billede erikjacobsen Ekspert
09. september 2001 - 21:02 #6
Jeg kender nok ikke en løsning, da jeg ikke vil anerkende at der er
et problem :)

Jeg får æøå tilbage - godt nok ikke lige i udskriften i mit DOS-vindue, hvor
den er så flink bare at skrive \"?\" ud. Men jeg kan se af ordinalværdierne, at
det er æøå:

import java.util.zip.*;
import java.util.*;

class  ZipTest {

  public static void main(String[] args)     {
    try  {
      ZipFile z = new ZipFile(\"C:\\\\erik\\\\java.zip\");
      Enumeration enum = z.entries();
      while (enum.hasMoreElements()) {
        ZipEntry e = (ZipEntry)(enum.nextElement());
        String s=e.getName();
        System.out.print(s+ \" \");
        for (int i=0;i<s.length();i++) {
          System.out.print((int)s.charAt(i)+\"/\");
        }
        System.out.println();
      }
    } catch (Exception ex) {
      System.out.println(ex);
    }
  }
}
Avatar billede netsrac Praktikant
09. september 2001 - 21:14 #7
erikjacobsen >> Ved mig i Kawa skriver den også blot ? ud. Men når jeg så skal hente bytes fra en fil i zip filen får jeg 0 byte tilbage selvom det er navnet som den selv har returneret.

Forviret ?

Min zip klasse:

import java.util.zip.*;
import java.util.Enumeration;
import java.util.Vector;
import java.util.Date;
import java.io.*;


public class cnhwebZip
{
    private boolean fileOpen;
    private ZipFile myzip;
    private String myfile;
   
    public void cnhwebZip()
    {
        fileOpen = false;
    }
   
    private void reset()
    {
        close();
        open(myfile);
    }
   
    public boolean open(String file)
    {
        try
        {
            myzip = new ZipFile(file);
            fileOpen = true;
            myfile = file;
        }
        catch (Exception e)
        { }
        return fileOpen;
    }
   
    public boolean close()
    {
        try
        {
            myzip.close();
            fileOpen = false;
        }
        catch (Exception e)
        { }
        return fileOpen ? false : true;
    }
   
    public int size()
    {
        if (fileOpen)
            return myzip.size();
        else
            return 0;   
    }
   
    public long entrySize(String entryName)
    {
        long size = 0;
        try
        {
            ZipEntry zip = myzip.getEntry(entryName);
            return zip.getSize();
        }
        catch(Exception e)
        {}
        return size;
    }
   
    public String entryComment(String entryName)
    {
        String comment = \"\";
        try
        {
            ZipEntry zip = myzip.getEntry(entryName);
            return zip.getComment();
        }
        catch(Exception e)
        {}
        return comment;
    }
   
    public long entryCompressedSize(String entryName)
    {
        long size = 0;
        try
        {
            ZipEntry zip = myzip.getEntry(entryName);
            return zip.getCompressedSize();
        }
        catch(Exception e)
        {}
        return size;
    }
   
    public String entryTime(String entryName)
    {
        String time = \"\";
        try
        {
            ZipEntry zip = myzip.getEntry(entryName);
            Date d = new Date(zip.getTime());
            return d.toString();
        }
        catch(Exception e)
        {}
        return time;
    }
   
    private String convertDecimal(int str, int decimals)
    {
        String tmp = new Integer(str).toString();
        for(int i = tmp.length(); i < decimals; i++)
        {
            tmp = \"0\" + tmp;
        }
        return tmp;
   
    }
   
    public String entryDKTime(String entryName)
    {
        String time = \"\";
        try
        {
            ZipEntry zip = myzip.getEntry(entryName);
            Date d = new Date(zip.getTime());
            return convertDecimal(d.getDate(),2) + \"-\" + convertDecimal(d.getMonth(),2) + \"-\" + (1900 + d.getYear()) + \" \" + convertDecimal(d.getHours(),2) + \":\" + convertDe
Avatar billede netsrac Praktikant
09. september 2001 - 21:17 #8
Nå det ville eksperten ikke lige være med til, der var vist for meget tekst.

Det jeg ikke kan forstå er at jeg i testprogrammet får 0 bytes tilbage når jeg bruger getBinaryData() selvom jeg bruger samme navn som den returnerer ved list()
Avatar billede erikjacobsen Ekspert
09. september 2001 - 21:58 #9
Jeg forstår dit problem nu. Nej, Zip-klasserne kan tilsyneladende
ikke finde filer med ASCII tegn over 127. Jeg har version 1.3.1, men
der er sket en lille smule med Locale i 1.4 - men mon dog det hjælper.

Der er noget med .jar filer og så \"ikke US tegn\" - men om det så er
smittet af på Zip-klasserne - det ved jeg ikke.

Du får ikke et 0, men en null-pointer hvis du leder efter et navn, der
\"ikke findes\".
Avatar billede netsrac Praktikant
09. september 2001 - 22:43 #10
Jeg får 0 byte tilbage fordi jeg har noget try catch på:

    public byte[] getBinaryData(String entryName)
    {
        byte[] zipBytes = new byte[0];
        try
        {
            ZipEntry zip = myzip.getEntry(entryName);
            InputStream zipReader = myzip.getInputStream(zip);
            Long totalBytes = new Long(zip.getSize());
            byte[] readBytes = new byte[totalBytes.intValue()];
            zipReader.read(readBytes, 0, totalBytes.intValue());
            return readBytes;
        }
        catch (Exception e)
        { }
        return zipBytes;
    }

Men vil det sige at det problem ikke kan løses ? Hvis det er tilfældet er det da noget skidt.
Avatar billede erikjacobsen Ekspert
09. september 2001 - 22:48 #11
jah ...
Avatar billede netsrac Praktikant
09. september 2001 - 22:51 #12
Erik >> *he he* Det lød som om du næsten var enig med mig, men alligevel ikke. Nå men det er der jo så ikke noget at gøre ved, tak for hjælpen :)
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

IT-JOB