func Rename(oldpath, newpath string) error {
	return os.Rename(fixpath(oldpath), fixpath(newpath))
}
Rename renames (moves) oldpath to newpath.
If newpath already exists, Rename replaces it.
OS-specific restrictions may apply when oldpath and newpath are in different directories.
If there is an error, it will be of type *LinkError.
package fs
import (
	"archive/zip"
	"fmt"
	"io"
	"io/ioutil"
	"os"
	"path"
	"path/filepath"
	"regexp"
	"strings"
)
type File interface {
	io.Reader
	io.Writer
	io.Closer
	Fd() uintptr
	Readdirnames(n int) ([]string, error)
	Readdir(int) ([]os.FileInfo, error)
	Seek(int64, int) (int64, error)
	Stat() (os.FileInfo, error)
}
func fixpath(name string) string {
	abspath, err := filepath.Abs(name)
	if err == nil {
		return UncPath(abspath)
	}
	return name
}
func UncPath(s string) string {
	isAbsWinDrive := regexp.MustCompile(`^[a-zA-Z]\:\\`)
	s = strings.Replace(s, `/`, `\`, -1)
	if strings.HasPrefix(s, `\\`) {
		if strings.HasPrefix(s, `\\?\`) {
			return s
		}
		return `\\?\UNC\` + strings.TrimPrefix(s, `\\`)
	}
	if isAbsWinDrive.MatchString(s) {
		return `\\?\` + s
	}
	return s
}
func RemoveUnc(s string) string {
	return strings.TrimLeft(s, `\\?\`)
}
func Open(name string) (File, error) {
	return os.OpenFile(fixpath(name), os.O_RDONLY, 0)
}
func ClearCache(f File) error {
	return nil
}
func Chmod(name string, mode os.FileMode) error {
	return os.Chmod(fixpath(name), mode)
}
func Mkdir(name string, perm os.FileMode) error {
	return os.Mkdir(fixpath(name), perm)
}
func MkdirAll(path string, perm os.FileMode) error {
	return os.MkdirAll(fixpath(path), perm)
}
func Readlink(name string) (string, error) {
	return os.Readlink(fixpath(name))
}
func Remove(name string) error {
	return os.Remove(fixpath(name))
}
func RemoveAll(path string) error {
	return os.RemoveAll(fixpath(path))
}