0

我想从 URL 导入 xml 文件。

我的代码是:

URL url = new URL(partnersEntity.getUrl());

            URLConnection urlConnection = url.openConnection();
            urlConnection.setReadTimeout(55000);


            File file = new File(fileURL);


            FileWriter writer = new FileWriter(file);

            IOUtils.copy(urlConnection.getInputStream(), writer);

问题是,XML 文件有 60000 行,但我的导入只保存了 11000 行。

问题出在哪里 ?

我可以设置内容长度吗?

4

1 回答 1

0

所有输入输出对象都是应该关闭的资源,否则您将有资源泄漏或丢失未刷新的缓冲区(您的情况)。它应该在 try-finally 块中完成。对于您的场景:

URL url = new URL(partnersEntity.getUrl());
URLConnection urlConnection = url.openConnection();
urlConnection.setReadTimeout(55000);

InputStream is = urlConnection.getInputStream();    
try
{
    File file = new File(fileURL);
    FileWriter writer = new FileWriter(file);
    try
    {
        IOUtils.copy(is, writer);
    }
    finally
    {
        IOUtils.closeQuietly(writer);
    }
}
finally
{
    IOUtils.closeQuietly(is);
}

在 Java 7 中,您可以使用新的 try 语法:

URL url = new URL(partnersEntity.getUrl());
URLConnection urlConnection = url.openConnection();
urlConnection.setReadTimeout(55000);


File file = new File(fileURL);

try(
    InputStream is = urlConnection.getInputStream();
    FileWriter writer = new FileWriter(file);
)
{
    IOUtils.copy(is, writer);
}
于 2013-03-01T11:21:55.733 回答