Home  >  Article  >  Backend Development  >  Is there a function that returns an absolute path from a path relative to another?

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

PHPz
PHPzforward
2024-02-05 23:15:081176browse

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

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
}

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

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!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete