public void run() {
            ArrayList<Object> obj = new ArrayList<Object>();
            obj.add(tag);
            bytesRead = 0;

            try {
                Edonkey ed2k = new Edonkey();
                byte[] b = new byte[1024 * 1024 * 4];
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));

                try {
                    int numRead;
                    while ((numRead = bis.read(b)) != -1 && !terminate) {
                        while (paused) Thread.sleep(100);
                        
                        ed2k.update(b, 0, numRead);
                        bytesRead += numRead;
                    }
                    hash = ed2k.getHexValue();
                } finally { bis.close(); }

            } catch (Exception e) {}
   

            parseEndOn = System.currentTimeMillis();
            if (!terminate) {
                callBack.invoke(fileParser);
            }
        }