Saya perlu dapat menentukan tempat fail berdasarkan laluan yang digunakan dalam fail yang berbeza. Mungkin lebih baik menggunakan contoh:
Ini ialah struktur direktori:
/ foo bar.txt text.txt bar main.go
Dalam fail text.txt, bar.txt ialah./bar.txt
引用,它可以工作,但是如果我尝试使用filepath.abs("从main.go找到
./bar.txt
的绝对路径./bar.txt")那么它将返回/bar/bar.txt
kerana ia menganggap .
Daripada dokumentasi: abs mengembalikan perwakilan mutlak laluan. Jika laluan itu bukan mutlak, ia akan digabungkan dengan direktori kerja semasa untuk menukarnya kepada laluan mutlak.
Soalan saya ialah bagaimana untuk mendapatkan laluan mutlak./bar.txt
apabila ia adalah ./bar.txt./bar.txt
. Berkaitan dengan text.txt.
Maaf soalan ini mungkin terlalu rumit, tetapi saya tidak dapat memikirkan cara yang lebih baik untuk menunjukkan contoh.
Jawapanini hampir sampai tetapi saya berjaya mengubah suainya supaya sesuai dengan saya.
func getabs(path string, locationpath string) string { new_file_path := path new_abs_path := path if filepath.isabs(new_file_path) { new_abs_path = new_file_path } else { new_abs_path, _ = filepath.abs(filepath.join(locationpath, path)) fmt.println(new_abs_path, locationpath) } return new_abs_path }
Hanya tambahkan laluan ke fail ke direktori di mana fail yang merujuknya berada.
Contohnya:
fmt.Println(getAbs("./bar.txt", "/foo")) //foo is the directory that text.txt is in which references bar.txt is in
Atas ialah kandungan terperinci Adakah terdapat fungsi yang mengembalikan laluan mutlak dari laluan relatif kepada laluan yang lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!