| // 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. |
| |
| // +build !windows,!plan9 |
| |
| package filepath_test |
| |
| import ( |
| "fmt" |
| "os" |
| "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" <nil> |
| // "/b/c": "../b/c" <nil> |
| // "./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")) |
| // Output: |
| // On Unix: |
| // a/b/c |
| // a/b/c |
| // a/b/c |
| // a/b/c |
| } |
| func ExampleWalk() { |
| dir := "dir/to/walk" |
| subDirToSkip := "skip" // dir/to/walk/skip |
| |
| err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { |
| if err != nil { |
| fmt.Printf("prevent panic by handling failure accessing a path %q: %v\n", dir, err) |
| return err |
| } |
| if info.IsDir() && info.Name() == subDirToSkip { |
| fmt.Printf("skipping a dir without errors: %+v \n", info.Name()) |
| return filepath.SkipDir |
| } |
| fmt.Printf("visited file: %q\n", path) |
| return nil |
| }) |
| |
| if err != nil { |
| fmt.Printf("error walking the path %q: %v\n", dir, err) |
| } |
| } |