// Copyright 2013 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build !windows && !plan9 package filepath_test import ( "fmt" "path/filepath" ) func ExampleSplitList() { fmt.Println("On Unix:", filepath.SplitList("/a/b/c:/usr/bin")) // Output: // On Unix: [/a/b/c /usr/bin] } func ExampleRel() { paths := []string{ "/a/b/c", "/b/c", "./b/c", } base := "/a" fmt.Println("On Unix:") for _, p := range paths { rel, err := filepath.Rel(base, p) fmt.Printf("%q: %q %v\n", p, rel, err) } // Output: // On Unix: // "/a/b/c": "b/c" // "/b/c": "../b/c" // "./b/c": "" Rel: can't make ./b/c relative to /a } func ExampleSplit() { paths := []string{ "/home/arnie/amelia.jpg", "/mnt/photos/", "rabbit.jpg", "/usr/local//go", } fmt.Println("On Unix:") for _, p := range paths { dir, file := filepath.Split(p) fmt.Printf("input: %q\n\tdir: %q\n\tfile: %q\n", p, dir, file) } // Output: // On Unix: // input: "/home/arnie/amelia.jpg" // dir: "/home/arnie/" // file: "amelia.jpg" // input: "/mnt/photos/" // dir: "/mnt/photos/" // file: "" // input: "rabbit.jpg" // dir: "" // file: "rabbit.jpg" // input: "/usr/local//go" // dir: "/usr/local//" // file: "go" } func ExampleJoin() { fmt.Println("On Unix:") fmt.Println(filepath.Join("a", "b", "c")) fmt.Println(filepath.Join("a", "b/c")) fmt.Println(filepath.Join("a/b", "c")) fmt.Println(filepath.Join("a/b", "/c")) fmt.Println(filepath.Join("a/b", "../../../xyz")) // Output: // On Unix: // a/b/c // a/b/c // a/b/c // a/b/c // ../xyz } func ExampleMatch() { fmt.Println("On Unix:") fmt.Println(filepath.Match("/home/catch/*", "/home/catch/foo")) fmt.Println(filepath.Match("/home/catch/*", "/home/catch/foo/bar")) fmt.Println(filepath.Match("/home/?opher", "/home/gopher")) fmt.Println(filepath.Match("/home/\\*", "/home/*")) // Output: // On Unix: // true // false // true // true } func ExampleBase() { fmt.Println("On Unix:") fmt.Println(filepath.Base("/foo/bar/baz.js")) fmt.Println(filepath.Base("/foo/bar/baz")) fmt.Println(filepath.Base("/foo/bar/baz/")) fmt.Println(filepath.Base("dev.txt")) fmt.Println(filepath.Base("../todo.txt")) fmt.Println(filepath.Base("..")) fmt.Println(filepath.Base(".")) fmt.Println(filepath.Base("/")) fmt.Println(filepath.Base("")) // Output: // On Unix: // baz.js // baz // baz // dev.txt // todo.txt // .. // . // / // . } func ExampleDir() { fmt.Println("On Unix:") fmt.Println(filepath.Dir("/foo/bar/baz.js")) fmt.Println(filepath.Dir("/foo/bar/baz")) fmt.Println(filepath.Dir("/foo/bar/baz/")) fmt.Println(filepath.Dir("/dirty//path///")) fmt.Println(filepath.Dir("dev.txt")) fmt.Println(filepath.Dir("../todo.txt")) fmt.Println(filepath.Dir("..")) fmt.Println(filepath.Dir(".")) fmt.Println(filepath.Dir("/")) fmt.Println(filepath.Dir("")) // Output: // On Unix: // /foo/bar // /foo/bar // /foo/bar/baz // /dirty/path // . // .. // . // . // / // . } func ExampleIsAbs() { fmt.Println("On Unix:") fmt.Println(filepath.IsAbs("/home/gopher")) fmt.Println(filepath.IsAbs(".bashrc")) fmt.Println(filepath.IsAbs("..")) fmt.Println(filepath.IsAbs(".")) fmt.Println(filepath.IsAbs("/")) fmt.Println(filepath.IsAbs("")) // Output: // On Unix: // true // false // false // false // true // false }