gpt4 book ai didi

android - 下载 PDF 时 InputStream 返回空文件

转载 作者:行者123 更新时间:2023-11-30 01:31:42 27 4
gpt4 key购买 nike

所以我正在尝试使用 HttpURLConnection 下载 PDF 文件,我认为我已经对输入和输出流做了所有正确的事情,但是当我打开下载的 PDF 文件时(使用 Android 中的内置文件管理器和/或 ADB),或者只是通过将其传输到 OS X 来检查它,它完全是空的并且大小显示为 0 字节。

我尝试从中下载 PDF 的站点是:

<子> http://www.pdf995.com/samples/pdf.pdf

这是我的代码

    public static void DownloadFile(final String fileURL, final File directory) {

Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {

try {
FileOutputStream f = new FileOutputStream(directory);
URL u = new URL(fileURL);
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
//c.setRequestProperty("Content-Type", "application/pdf");
//c.setDoOutput(true);
c.connect();
Log.d("debugz", Integer.toString(c.getContentLength()));

InputStream in = c.getInputStream();

byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = in.read(buffer)) > 0) {
f.write(buffer, 0, len1);
}
f.flush();
f.getFD().sync();
f.close();


} catch (Exception e) {
e.printStackTrace();
}


} catch (Exception e) {
e.printStackTrace();
}
}
});

thread.start();


}


public static String getPDF(String pdfurl) {

String extStorageDirectory = Environment.getExternalStorageDirectory()
.toString();
File folder = new File(extStorageDirectory, "schematisktscheman");
folder.mkdir();
File file = new File(folder, "schemainfo.pdf");
try {
file.createNewFile();
} catch (IOException e1) {
e1.printStackTrace();
}
DownloadFile(pdfurl, file);

return null; //added return
}

在我的主要 Activity 中:

SchedulePdfProcessor.getPDF("http://www.pdf995.com/samples/pdf.pdf");
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/schematisktscheman/schemainfo.pdf")));

编辑:我在主线程上运行网络代码,这引发了异常。现在为下载创建一个新线程,它获取示例 PDF ( http://www.pdf995.com/samples/pdf.pdf ) 并将其内容放入文件中。感谢@greenapps!

最佳答案

首先,替换:

f.close();

与:

f.flush();
f.getFD().sync();
f.close();

这可确保在继续之前将所有内容写入磁盘。

然后,您需要使用MediaScannerConnectionscanFile() 来让MediaStore 了解更新的文件。

关于android - 下载 PDF 时 InputStream 返回空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35676692/

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