JVM 学习 第 2 课
go 代码从压缩文件中查找参数中输入的文件,如从
C:\Program Files\Java\jdk1.8.0_65\jre\lib\rt.jar 中找到java/lang/Object.class,并读取java/lang/Object.class的数据。 func (self *ZipEntry) readClass(className string) ([]byte, Entry, error) { r, err := zip.OpenReader(self.absPath) if err != nil { return nil, nil, err } defer r.Close() for _, f := range r.File { if f.Name == className { fmt.Printf("imf zipfile ReadClass %v\n ", className) fmt.Printf("imf zip OpenReader self absPath %v\n ", self.absPath ) fmt.Printf(" \n " ) fmt.Printf(" \n " ) rc, err := f.Open() if err != nil { return nil, nil, err } defer rc.Close() data, err := ioutil.ReadAll(rc) if err != nil { return nil, nil, err } return data, self, nil } } return nil, nil, errors.New("class not found: " + className) }