本文整理汇总了Golang中code/google/com/p/leveldb-go/leveldb/db.FileSystem.List方法的典型用法代码示例。如果您正苦于以下问题:Golang FileSystem.List方法的具体用法?Golang FileSystem.List怎么用?Golang FileSystem.List使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类code/google/com/p/leveldb-go/leveldb/db.FileSystem
的用法示例。
在下文中一共展示了FileSystem.List方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: cloneFileSystem
// cloneFileSystem returns a new memory-backed file system whose root contains
// a copy of the directory dirname in the source file system srcFS. The copy
// is not recursive; directories under dirname are not copied.
//
// Changes to the resultant file system do not modify the source file system.
//
// For example, if srcFS contained:
// - /bar
// - /baz/0
// - /foo/x
// - /foo/y
// - /foo/z/A
// - /foo/z/B
// then calling cloneFileSystem(srcFS, "/foo") would result in a file system
// containing:
// - /x
// - /y
func cloneFileSystem(srcFS db.FileSystem, dirname string) (db.FileSystem, error) {
if len(dirname) == 0 || dirname[len(dirname)-1] != os.PathSeparator {
dirname += string(os.PathSeparator)
}
dstFS := memfs.New()
list, err := srcFS.List(dirname)
if err != nil {
return nil, err
}
for _, name := range list {
srcFile, err := srcFS.Open(dirname + name)
if err != nil {
return nil, err
}
stat, err := srcFile.Stat()
if err != nil {
return nil, err
}
if stat.IsDir() {
err = srcFile.Close()
if err != nil {
return nil, err
}
continue
}
data := make([]byte, stat.Size())
_, err = io.ReadFull(srcFile, data)
if err != nil {
return nil, err
}
err = srcFile.Close()
if err != nil {
return nil, err
}
dstFile, err := dstFS.Create(name)
if err != nil {
return nil, err
}
_, err = dstFile.Write(data)
if err != nil {
return nil, err
}
err = dstFile.Close()
if err != nil {
return nil, err
}
}
return dstFS, nil
}