Is there a function that returns an absolute path from a path relative to another?

PHPz
Release: 2024-02-05 23:15:08
forward
1174 people have browsed it

Is there a function that returns an absolute path from a path relative to another?

Question content

I need to be able to determine where a file is based on the paths used in different files. It might be better to use an example:

This is the directory structure:

/
  foo
    bar.txt
    text.txt
  bar
    main.go
Copy after login

In the text.txt file, bar.txt is referenced by ./bar.txt, it works, but if I try to use filepath.abs​​("From main.go Find the absolute path to <code>./bar.txt./bar.txt") then it will return /bar/bar.txt because it assumes . is the current working directory.

From the documentation: abs returns the absolute representation of the path. If the path is not absolute, it will be concatenated with the current working directory to convert it to an absolute path.

My question is how to get the absolute path of ./bar.txt when it is ./bar.txt. Related to text.txt.

I'm sorry this question may be overly complex, but I can't think of a better way to show an example.


Correct answer


This answer is pretty much the same, but I managed to modify it to suit me.

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
}
Copy after login

Simply add the path to the file to the directory containing the file that references it.

For example:

fmt.Println(getAbs("./bar.txt", "/foo")) //foo is the directory that text.txt is in which references bar.txt is in
Copy after login

The above is the detailed content of Is there a function that returns an absolute path from a path relative to another?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!