2
type listAllFilesArgs struct {
\t query string
\t fields []googleapi.Field
\t sortOrder string
\t maxFiles int64
}
type Field string
func (self *Drive) listAllFiles(args listAllFilesArgs) ([]*drive.File, error) {
\t var files []*drive.File
\t var pageSize int64
\t if args.maxFiles > 0 && args.maxFiles < 1000 {
\t \t pageSize = args.maxFiles
\t } else {
\t \t pageSize = 1000
\t }
\t controlledStop := fmt.Errorf("Controlled stop")
\t err := self.service.Files.List().Q(args.query).Fields(args.fields...).OrderBy(args.sortOrder).PageSize(pageSize).Pages(context.TODO(), func(fl *drive.FileList) error {
\t \t files = append(files, fl.Files...)
\t \t // Stop when we have all the files we need
\t \t if args.maxFiles > 0 && len(files) >= int(args.maxFiles) {
\t \t \t return controlledStop
\t \t }
\t \t return nil
\t })
\t if err != nil && err != controlledStop {
\t \t return nil, err
\t }
\t if args.maxFiles > 0 {
\t \t n := min(len(files), int(args.maxFiles))
\t \t return files[:n], nil
\t }
\t return files, nil
}
func (self *Drive) newPathfinder() *remotePathfinder {
\t return &remotePathfinder{
\t \t service: self.service.Files,
\t \t files: make(map[string]*drive.File),
\t }
}
我使用去为我的Google云端硬盘API开发以下目不转睛版本使用率的详细信息, 去版本GO1 .8.1 windows/amd64 和进口 “google.golang.org/api/drive/v3” “google.gola ng.org/api/googleapi” 发展
为Golang上市文件,包括垃圾
err = gDrive.List(listArgs)
\t if err != nil {
\t \t fmt.Errorf("Failed to list files: %s", err)
\t }
func (self *Drive) List(args ListFilesArgs) (err error) {
\t listArgs := listAllFilesArgs{
\t \t query: args.Query,
\t \t fields: []googleapi.Field{"nextPageToken", "files(id,name,md5Checksum,mimeType,size,createdTime,parents)"},
\t \t sortOrder: args.SortOrder,
\t \t maxFiles: args.MaxFiles,
\t }
\t files, err := self.listAllFiles(listArgs)
\t if err != nil {
\t \t return fmt.Errorf("Failed to list files: %s /n", err)
\t }
\t pathfinder := self.newPathfinder()
\t if args.AbsPath {
\t \t // Replace name with absolute path
\t \t for _, f := range files {
\t \t \t f.Name, err = pathfinder.absPath(f)
\t \t \t if err != nil {
\t \t \t \t return err
\t \t \t }
\t \t }
\t }
\t PrintFileList(PrintFileListArgs{
\t \t Out: args.Out,
\t \t Files: files,
\t \t NameWidth: int(args.NameWidth),
\t \t SkipHeader: args.SkipHeader,
\t \t SizeInBytes: args.SizeInBytes,
\t })
\t return
}
谷歌驱动API。 如何排除垃圾文件,
您的片段仍不清楚,例如如何'self.listAllFiles'和'self.newPathfinder()'实现? – putu
@putu,你能看到更新 –
你可以通过['drive.File'](https://godoc.org/google.golang.org/api/drive/v3#File)过滤文件。在结构中有'Trashed'和'ExplicitlyTrashed'字段。将其设置在将传递给'Q(...)'的查询中。有关查询的更多详细信息,请参阅[搜索文件](https://developers.google.com/drive/v3/web/search-parameters) – putu