golang では、os パッケージの組み込み Remove() または RemoveAll() 関数を使用してファイルを削除できます。構文は「os.Remove(path)」または「os.RemoveAll(path)」です。 )」。ファイルを削除する場合、RemoveAll() メソッドと Remove() メソッドには大きな違いはありませんが、ディレクトリを削除する場合、Remove() は空のディレクトリのみを削除できますが、RemoveAll() は制限なく削除できます。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
golang では、ファイルの削除、ファイルの作成、ファイルの読み取り、ファイルの書き込みなどのほとんどすべてのファイル操作が os パッケージを通じて完了します。したがって、Golang でファイルを管理したい場合は、Golang の組み込み OS パッケージを使用する必要があります。
Golang でファイルを削除するには、os.Remove() または os.RemoveAll() 関数を使用します。 os.Remove() 関数と os.RemoveAll() 関数は、ファイルを削除するための組み込み Golang 関数です。削除できるファイルへのファイル パスを指定します。名前付きのファイルまたは (空の) ディレクトリを削除します。
RemoveAll 関数は Remove と同じように使用されますが、すべてのサブディレクトリとファイルを再帰的に削除する点が異なります。今日は、この 2 つの具体的な違いを見ていきます。
ファイルの削除
os.Remove()
次に、os を使用します。 Remove() メソッドは、コードを使用して検証する必要があるため、ファイルを削除します。削除する前に、まずファイル test.txt を作成してから、それを削除する必要があります。具体的なコードは次のとおりです。
package main import ( "os" "fmt" ) func main () { testFile := "test.txt" _, err := os.Create(testFile) //创建文件 if err != nil { fmt.Println("文件创建失败") } // 使用 os.Remove() 删除文件 err = os.Remove(testFile) if err != nil { fmt.Println("删除失败") } else { fmt.Println("删除成功") } }
os.RemoveAll()
さて、上記の例を通して、os.Remove() を確認できます。ファイルを削除するには依然として非常に便利です。それでは、os.RemoveAll() がどのように実行されるかを見てみましょう。コードは以前と同じです。delete メソッドを置き換えてみましょう。変更したコードは次のとおりです。
package main import ( "os" "fmt" ) func main () { testFile := "test.txt" _, err := os.Create(testFile) //创建文件 if err != nil { fmt.Println("文件创建失败") } // 使用 os.RemoveAll() 删除文件 err = os.RemoveAll(testFile) if err != nil { fmt.Println("删除失败") } else { fmt.Println("删除成功") } }
コード実行結果:
##ディレクトリの削除
#os.Remove()os.Remove() を使用してディレクトリを削除すると、どのような効果がありますか?次に、コードを直接見てみましょう。
コード例:
package main import ( "os" "fmt" ) func main () { testDir := "d1/d2/d3" // 创建多级目录 err := os.MkdirAll(testDir, os.ModePerm) if err != nil { fmt.Println("文件创建失败", err) } // 使用 os.Remove() 删除文件 err = os.Remove(testDir) if err != nil { fmt.Println("删除失败", err) } else { fmt.Println("删除成功") } }
コード実行結果:
##os.RemoveAll()
#それでは、os.RemoveAll() メソッドを使用してディレクトリを削除すると、どのような影響があるのでしょうか?コードも見てみましょう! コード例:
package main import ( "os" "fmt" ) func main () { testDir := "d1/d2/d3" // 创建多级目录 err := os.MkdirAll(testDir, os.ModePerm) if err != nil { fmt.Println("文件创建失败", err) } // 使用 os.RemoveAll() 删除文件 err = os.RemoveAll(testDir) if err != nil { fmt.Println("删除失败") } else { fmt.Println("删除成功") } }
コードの実行結果:
ディレクトリを削除する場合、2 つのメソッドは同じであることがわかります。効果、どちらに違いはありませんか?答えは否定的です。上記のディレクトリ削除コードを引き続き使用している場合、ディレクトリ d3 の代わりにディレクトリ d2 を削除すると、結果はどうなりますか?コードを変更した後、os.RemoveAll() メソッドには問題がないことが最終的にわかりましたが、os.Remove() はエラーを報告しました。エラー メッセージは次のとおりでした:
remove d1/d2/: directory not empty
はい、ディレクトリ d2 は空ではありません。はい、サブディレクトリ d3 もあるので、この時点で、os.RemoveAll() と os.Remove() の違いがついにわかりました。
注:ファイルを削除する場合、os.RemoveAll() メソッドと os.Remove() メソッドには大きな違いはありません。ただし、ディレクトリを削除する場合、os.Remove() は空のディレクトリのみを削除できますが、os.RemoveAll() は制限なく空のディレクトリを削除できます。 【関連する推奨事項:
Go ビデオ チュートリアル、
プログラミング教育以上がgolangでファイルを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。