获取Internet文件并使用Java将其转换为File对象?

时间:2011-10-06 12:51:19

标签: java file url io inputstream

  

可能重复:
  Reading binary file from URLConnection

现在我有一个网址:

http://elsa.berkeley.edu/~saez/TabFig2005prel.xls例如,使用http:scheme)。

我需要在我的程序中访问此文件并将其存储为File对象,以便我可以执行以下工作。所以任何人都知道如何将其作为File对象?我不知道如何将InputStream转换为文件。

谢谢 艾伦

5 个答案:

答案 0 :(得分:1)

如何使用apache commons-io(http://commons.apache.org/io/

它有一个

FileUtils.copyURLToFile(URL,File);

答案 1 :(得分:1)

int chunkSize = 500;

    BufferedInputStream in = new java.io.BufferedInputStream(new URL("http://javakata6425.appspot.com/db_imgs/projectsBinaries/photoLib/photoLib.jar").openStream());
    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d://temp//photoLib.jar"), chunkSize);
    byte[] data = new byte[chunkSize];
    int x = 0;
    while ((x = in.read(data, 0, chunkSize)) >= 0) {
        out.write(data, 0, x);
    }
    out.close();
    in.close();

答案 2 :(得分:1)

您可以使用以下代码(假设InputStream对象名称为“content”)

File myFile = new File("newFile.ext");
FileOutputStream fos = null;
try {
    fos = new FileOutputStream(myFile);
    int read = 0;
    byte[] buff = new byte[1024];
    while ((read = content.read(buff)) > -1)
        fos.write(buff, 0, read);
} catch (IOException e1) {
    /* do something? */
} finally {
    if (fos != null) {
        try { fos.close() } catch (IOException e2) {/* do something? */}
    }
}

答案 3 :(得分:1)

URL url = new URL("http://elsa.berkeley.edu/~saez/TabFig2005prel.xls");
InputStream in = url.openStream();
try {
    OutputStream out = new FileOutputStream("output.xls");
    try {
        byte buf[] = new byte[4096];
        for (int n = in.read(buf); n > 0; n = in.read(buf)) {
            out.write(buf, 0, n);
        }
    } finally {
        out.close();
    }
} finally {
    in.close();
}

答案 4 :(得分:0)

伪代码:

create FileWriter pointing to "localdrive/local_copy.xls"
foreach byte you can read from the input stream:
    write the byte to the filewriter
flush the filewriter
close the filewriter

瞧。您现在已将文件保存在本地。