请问各位JAVA高手:我在用DataInputStream读取JAR包时,用read(byte[],int,int)方法分批读取,但读到最后一批字节时线程出现死锁的情况,请大虾们指教

解决方案 »

  1.   

    自己顶一下,再说详细点:
         * @param aStart 起始位置
         * @param aLength 读取的长度
         * @return byte[] 返回保存路径的字节数组
        public byte[] getBytes(int aStart, int aLength)
        {
            DataInputStream lDataInputStream = null;
            byte[] lContent = null;
            try
            {
                lDataInputStream = new DataInputStream(
                    new BufferedInputStream(
                    new FileInputStream(“**.jar路径”)));
                lContent = new byte[aLength];
                lDataInputStream.skip(aStart);
                lDataInputStream.read(lContent, 0, aLength);
                lDataInputStream.close();
            }
            catch (Exception e)
            {
                e.printStackTrace();
                return null;
            }
            return lContent;
        }
      

  2.   

    不是的,其实死锁是因为DataInputStream读取服务器文件导致的,所以上面的是读取服务器文件的方法
      

  3.   

    我实在找不出原因了,因为我做的项目需要通过EJB远程读取服务器端的JAR文件,然后更新系统,经常出现更新
    时死锁的情况,就是读取最后一批字节时出现死琐,我觉得应该是read方法中的BUG
      

  4.   

    就上面的代码来看,没有考虑到 lContent 没有读满的情况