java、jsoup和文件的一些小问题

java、jsoup和文件的一些小问题,java,jsoup,Java,Jsoup,我不熟悉Java,甚至更不熟悉Java,但我觉得我对文件很笨 我想通过解析一些HTML来创建一个文件,但是.txt只有80kbs,我知道应该有更多的行。可能是jsoup中的元素支持的大小,或者我只是让缓冲区满了 这是我正在使用的代码: public class RetrieveURLs { public static void main(String[] args) throws FileNotFoundException { try {

我不熟悉Java,甚至更不熟悉Java,但我觉得我对文件很笨

我想通过解析一些HTML来创建一个文件,但是.txt只有80kbs,我知道应该有更多的行。可能是jsoup中的元素支持的大小,或者我只是让缓冲区满了

这是我正在使用的代码:

public class RetrieveURLs
{
    public static void main(String[] args)
        throws FileNotFoundException
    {
        try {
            PrintWriter out = new PrintWriter( "filename.txt" );
            for (int i = 1; i < 80; i++) {
                Document doc = Jsoup.connect(
                    "http://elbuenfin.org/buscar/ofertas/pagina/"+ i +"/?entidad_id=&municipio_id=&categoria_id=&descuento_id=&promocion_id=&meses_id=&fulltext=&orderby=&order=").get();
                Element tienda = doc.select("div.product").first();

                out.println(tienda);
            }
        } catch (IOException ex) {
            Logger.getLogger(RetrieveURLs.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
公共类检索URL
{
公共静态void main(字符串[]args)
抛出FileNotFoundException
{
试一试{
PrintWriter out=新的PrintWriter(“filename.txt”);
对于(int i=1;i<80;i++){
Document doc=Jsoup.connect(
"http://elbuenfin.org/buscar/ofertas/pagina/“+i+”/?entidad_id=&Communicipio_id=&categoria_id=&descuento_id=&promocion_id=&meses_id=&fulltext=&orderby=&order=”).get();
元素tienda=doc.select(“div.product”).first();
out.println(田达);
}
}捕获(IOEX异常){
Logger.getLogger(RetrieveURLs.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
这不是
println()
,仅此而已。这应该如预期的那样起作用:

public class RetrieveURLs
{
    public static void main(String[] args)
        throws FileNotFoundException
    {
        try {
            PrintWriter out = new PrintWriter( "filename.txt" );
            for (int i = 1; i < 80; i++) {
                Document doc = Jsoup.connect(
                    "http://elbuenfin.org/buscar/ofertas/pagina/"+ i +"/?entidad_id=&municipio_id=&categoria_id=&descuento_id=&promocion_id=&meses_id=&fulltext=&orderby=&order=").get();
                Element tienda = doc.select("div.product").first();

                out.write(tienda.toString());
            }
        } catch (IOException ex) {
            Logger.getLogger(RetrieveURLs.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
公共类检索URL
{
公共静态void main(字符串[]args)
抛出FileNotFoundException
{
试一试{
PrintWriter out=新的PrintWriter(“filename.txt”);
对于(int i=1;i<80;i++){
Document doc=Jsoup.connect(
"http://elbuenfin.org/buscar/ofertas/pagina/“+i+”/?entidad_id=&Communicipio_id=&categoria_id=&descuento_id=&promocion_id=&meses_id=&fulltext=&orderby=&order=”).get();
元素tienda=doc.select(“div.product”).first();
out.write(tienda.toString());
}
}捕获(IOEX异常){
Logger.getLogger(RetrieveURLs.class.getName()).log(Level.SEVERE,null,ex);
}
}
}

你能解释一下你的答案吗?它试图解决什么问题?获取对文件的访问权并将其返回是一项成本非常高的操作,因此我们正在尝试尽可能减少其数量。因为Java类在默认情况下使用的缓冲区保存了部分数据,并且只有当缓冲区已满时,它才会自动将其内容写入文件。但在某些时候,当我们完成为缓冲区生成内容时,它可能不足以完全填充它。在这种情况下,我们需要在writer上显式调用
flush()
方法。或者,如果您不想编写任何其他的
close()
(它也调用
flush()
)。为了确保即使发生异常也会调用此方法,我们将其放置在
try
finally
块中,在该块中可能会引发此类异常。如果您不想显式地处理关闭资源的问题,您可以使用try-with-resources,它将自动编译到try-with-finally部分,该部分将处理关闭流。要在此处执行此操作,请使用
try(PrintWriter out=new PrintWriter(“filename.txt”);…}
而不是
try(PrintWriter out=new PrintWriter(“filename.txt”){..}
。我也不认为这是最大大小文档的问题,因为根据Jsoup作者在这里发布的答案,它是1MB,比您现在得到的要大。谢谢,我正在阅读并尝试这些答案。这可能也有帮助: