1 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個贊
你沒有關(guān)閉文件。這個:
defer newTempFileHandle.Close()
在 main 完成時運(yùn)行,這是在:
err = RemoveContents("./myFiles")
您可以將那段代碼包裝在一個未命名的函數(shù)中:
func() {
//read the file or folder handle inside zip
fileOpenHandle, err := fileReadHandler.Open()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer fileOpenHandle.Close()
targetUnZipPath := filepath.Join(tempWrkDir, fileReadHandler.Name)
if fileReadHandler.FileInfo().IsDir() {
os.MkdirAll(targetUnZipPath, fileReadHandler.Mode())
//fmt.Println("Creating directory", path)
} else {
// create new dummy file to copy original file.
newTempFileHandle, err := os.OpenFile(targetUnZipPath, os.O_WRONLY|os.O_CREATE, fileReadHandler.Mode())
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer newTempFileHandle.Close()
//copying original file to dummy file.
if _, err = io.Copy(newTempFileHandle, fileOpenHandle); err != nil {
fmt.Println(err)
os.Exit(1)
}
}
}()
然后您的延遲將在您嘗試刪除文件之前發(fā)生。不過,我建議將其提取到命名函數(shù)中。
- 1 回答
- 0 關(guān)注
- 288 瀏覽
添加回答
舉報