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)
}