gpt4 book ai didi

java - 如何在RxJava中传输多个参数

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:11 24 4
gpt4 key购买 nike

我使用 RxJava 和 Okhttp 下载文件。例如,我需要下载文件的网址和创建名称的名称。但我一次只能获取一个参数。

有没有办法同时获取url和name?

api.getRatedWallpapers()
.flatMap(Observable::from)
.map(wallpaper -> wallpaper.detail)
.filter(details -> details != null && details.size() != 0)
.flatMap(Observable::from)
.filter(detail1 -> detail1.width > 1920)
.map(detail -> detail.il_file)
.map(s -> new Request.Builder().url(s).build())
.map(client::newCall)
.map(call -> {
try {
return call.execute();
} catch (IOException e) {
e.printStackTrace();
}
return null;
})
.map(response -> {
try {
return response.body().byteStream();
} catch (IOException e) {
e.printStackTrace();
}
return null;
})
.map(BufferedInputStream::new)
.subscribe(bufferedInputStream -> {

//Here I should use the name in the Detail instance.
File file = new File(random.nextInt(10000) + ".jpg");
try {
FileOutputStream fos = new FileOutputStream(file);
byte[] buffer = new byte[512];
int hasRead;
while ((hasRead = bufferedInputStream.read(buffer)) != -1) {
fos.write(buffer, 0, hasRead);
}
fos.close();
bufferedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
},
Throwable::printStackTrace,
() -> System.out.println("Completed"));

最佳答案

要么使用专用包装类将两者结合起来,要么使用 Zip运算符。

关于java - 如何在RxJava中传输多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34536056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com