Rumah >pembangunan bahagian belakang >Golang >Adakah terdapat fungsi yang mengembalikan laluan mutlak dari laluan relatif kepada laluan yang lain?

Adakah terdapat fungsi yang mengembalikan laluan mutlak dari laluan relatif kepada laluan yang lain?

PHPz
PHPzke hadapan
2024-02-05 23:15:081209semak imbas

Adakah terdapat fungsi yang mengembalikan laluan mutlak dari laluan relatif kepada laluan yang lain?

Kandungan soalan

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找到<code>./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.


Jawapan Betul


Jawapan ini 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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam