Java 如果我动态地将fileId传递给query,那么获取所有子项的googledriveapi不起作用

Java 如果我动态地将fileId传递给query,那么获取所有子项的googledriveapi不起作用,java,google-api,google-drive-api,google-api-java-client,Java,Google Api,Google Drive Api,Google Api Java Client,我正在尝试谷歌驱动器api来搜索文件夹的父文件夹。在搜索查询中,我必须动态传递文件id,而不是硬编码。我尝试了下面的代码。但我得到了文件未找到的json响应 这里不把文件ID作为值,我认为它是字符串。 如果我硬编码它正在工作的值。 FileList result=service.files().list().setQ(“name='testfile')).execute() 我知道你的问题是java,但唯一可行的是C语言。另一个问题是,据我所知,java客户机库中没有一个等价物 我希望C#和ja

我正在尝试谷歌驱动器api来搜索文件夹的父文件夹。在搜索查询中,我必须动态传递文件id,而不是硬编码。我尝试了下面的代码。但我得到了文件未找到的json响应

<>这里不把文件ID作为值,我认为它是字符串。 如果我硬编码它正在工作的值。 FileList result=service.files().list().setQ(“name='testfile')).execute()


我知道你的问题是java,但唯一可行的是C语言。另一个问题是,据我所知,java客户机库中没有一个等价物

我希望C#和java足够接近,这可能会让您了解如何在java中工作。我的java知识是quote basic,但如果您想转换它,我可能可以帮助您调试它

try
            {
                // Initial validation.
                if (service == null)
                    throw new ArgumentNullException("service");

                // Building the initial request.
                var request = service.Files.List();

                // Applying optional parameters to the request.
                request = (FilesResource.ListRequest)SampleHelpers.ApplyOptionalParms(request, optional);

                var pageStreamer = new Google.Apis.Requests.PageStreamer<Google.Apis.Drive.v3.Data.File, FilesResource.ListRequest, Google.Apis.Drive.v3.Data.FileList, string>(
                                                   (req, token) => request.PageToken = token,
                                                   response => response.NextPageToken,
                                                   response => response.Files);

                var allFiles = new Google.Apis.Drive.v3.Data.FileList();
                allFiles.Files = new List<Google.Apis.Drive.v3.Data.File>();

                foreach (var result in pageStreamer.Fetch(request))
                {
                    allFiles.Files.Add(result);
                }

                return allFiles;
            }
            catch (Exception Ex)
            {
                throw new Exception("Request Files.List failed.", Ex);
            }
试试看
{
//初步验证。
if(服务==null)
抛出新的异常(“服务”);
//构建初始请求。
var request=service.Files.List();
//将可选参数应用于请求。
request=(fileResource.ListRequest)SampleHelpers.ApplyOptionalParms(请求,可选);
var pageStreamer=new Google.api.Requests.pageStreamer(
(请求,令牌)=>request.PageToken=令牌,
response=>response.NextPageToken,
response=>response.Files);
var allFiles=new Google.api.Drive.v3.Data.FileList();
allFiles.Files=新列表();
foreach(pageStreamer.Fetch中的var结果(请求))
{
allFiles.Files.Add(结果);
}
返回所有文件;
}
捕获(例外情况除外)
{
抛出新异常(“请求文件.列表失败。”,Ex);
}
这应该会有所帮助

String fileid=file.getId()

 service.files().list().setQ("'" + fileId + "'" + " in parents").setFields("files(id, name, modifiedTime, mimeType)").execute();

确保您有有效的
file.getId()

我的问题是查询“+\”file.getId()\”在parents中“有没有办法动态传递fileid而不是硬编码file.getId()呢?”它不是硬编码的,它是你正在循环的当前文件中的文件id,尽管现在我正在迭代文件夹的子项并获取文件id。它不是硬编码的。如果我硬编码有效,我尝试了,但是我如何将动态id传递给该查询
String fileid=file.getId()

 service.files().list().setQ("'" + fileId + "'" + " in parents").setFields("files(id, name, modifiedTime, mimeType)").execute();