fix: ensure proper resource management in file operations (#12358)

* fix: Ensure proper resource management in file operations by closing files after creation and compression

* fix: Improve error handling for log file operations in MediaFile function
This commit is contained in:
KOMATA
2026-04-07 17:35:31 +08:00
committed by GitHub
parent 3e4a48c892
commit 39d2c34682
2 changed files with 15 additions and 7 deletions

View File

@@ -54,13 +54,17 @@ func MediaFile(inputFile, outputFile, outputFormat string, deleteSource bool) (s
if !flag {
return status, fmt.Errorf("ffmpeg not found, cannot convert file")
}
logFile, logErr := os.OpenFile(filepath.Join(global.Dir.ConvertLogDir, "convert.log"), os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
allLogFile, allErr := os.OpenFile(filepath.Join(global.Dir.ConvertLogDir, "convert-all.log"), os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if logErr != nil || allErr != nil {
return status, fmt.Errorf("cannot open log file: %w", err)
logFile, err := os.OpenFile(filepath.Join(global.Dir.ConvertLogDir, "convert.log"), os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return status, fmt.Errorf("cannot open convert.log: %w", err)
}
defer logFile.Close()
allLogFile, err := os.OpenFile(filepath.Join(global.Dir.ConvertLogDir, "convert-all.log"), os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return status, fmt.Errorf("cannot open convert-all.log: %w", err)
}
defer allLogFile.Close()
args, fileType, err := buildFFmpegArgs(inputFile, outputFile, outputFormat)
if err != nil {
return status, fmt.Errorf("FFmpeg args failed: %w", err)

View File

@@ -120,10 +120,11 @@ func (f FileOp) CreateDirWithPath(isDir bool, pathItem string) (string, error) {
}
func (f FileOp) CreateFile(dst string) error {
if _, err := f.Fs.Create(dst); err != nil {
file, err := f.Fs.Create(dst)
if err != nil {
return err
}
return nil
return file.Close()
}
func (f FileOp) CreateFileWithMode(dst string, mode fs.FileMode) error {
@@ -822,6 +823,7 @@ func (f FileOp) Compress(srcRiles []string, dst string, name string, cType Compr
if err != nil {
return err
}
defer out.Close()
switch cType {
case Zip:
@@ -936,6 +938,7 @@ func (f FileOp) decompressWithSDK(srcFile string, dst string, cType CompressType
if err != nil {
return err
}
defer input.Close()
if err := format.Extract(context.Background(), input, nil, handler); err != nil {
return err
}
@@ -1007,6 +1010,7 @@ func ZipFile(files []archiver.File, dst afero.File) error {
return err
}
_, err = io.Copy(w, fileReader)
fileReader.Close()
if err != nil {
return err
}