Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java和Jsoup对目录中的文件进行HTML解析_Java_List_Arraylist_Hashmap_Jsoup - Fatal编程技术网

使用java和Jsoup对目录中的文件进行HTML解析

使用java和Jsoup对目录中的文件进行HTML解析,java,list,arraylist,hashmap,jsoup,Java,List,Arraylist,Hashmap,Jsoup,我在将一些html文件从目录解析到输出目录时遇到问题。我使用Jsoup删除HTML标记并写入输出目录,但在测试时,一些数据丢失了。最后,我想用解析后的文件填充一个hashmap,这样我就可以按频率对单词进行排序,然后在一个单独的目录中按字母顺序对它们进行排序。这是编译和运行的,但当我写出来的时候,我就被卡在了最后。代码将是可爱的,但我只感兴趣的步骤,以采取设置整个事情。多谢各位 更新:这里是代码。 更新:我还觉得Jsoup正在摆脱数据 import java.io.BufferedWriter;

我在将一些html文件从目录解析到输出目录时遇到问题。我使用Jsoup删除HTML标记并写入输出目录,但在测试时,一些数据丢失了。最后,我想用解析后的文件填充一个hashmap,这样我就可以按频率对单词进行排序,然后在一个单独的目录中按字母顺序对它们进行排序。这是编译和运行的,但当我写出来的时候,我就被卡在了最后。代码将是可爱的,但我只感兴趣的步骤,以采取设置整个事情。多谢各位

更新:这里是代码。 更新:我还觉得Jsoup正在摆脱数据

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
import org.jsoup.Jsoup;

public class Parser {

    public static File infolder = new File("input folder folder path goes here");
    static String temp = "";
    static ArrayList<String> list = new ArrayList<String>();

    public static void main(String[] args) throws FileNotFoundException
    {
        String outfolder = "output folder path goes here";

        File theDir = new File(outfolder);
        // if the directory does not exist, create it
        if (!theDir.exists()) {
            System.out.println("creating directory: " + outfolder);
            boolean result = theDir.mkdir();
            if (result) {
                System.out.println("DIR created");
            }
        }

        System.out.println("Reading files under the folder " + infolder.getAbsolutePath());
        parseFiles(infolder);
        // System.out.println();
    }

    public static void parseFiles(final File folder) throws FileNotFoundException
    {
        PrintWriter out = null;
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isFile()) {
                temp = fileEntry.getName();
                if ((temp.substring(temp.lastIndexOf('.') + 1, temp.length()).toLowerCase()).equals("html")) {
                    System.out.println("File= " + folder.getAbsolutePath() + "\\" + fileEntry.getName());
                    File file = new File(folder.getAbsolutePath() + "\\" + fileEntry.getName());
                    ArrayList<String> filetext = new ArrayList<String>();
                    Scanner in = new Scanner(file);

                    while (in.hasNextLine()) {
                        filetext.add(in.nextLine());
                    }

                    String filename = "tokenfile" + fileEntry.getName();

                    try {
                        out = new PrintWriter(new BufferedWriter(new FileWriter("C:/Users/bounty213/Desktop/Output/" + filename + ".txt", true)));
                    }
                    catch (IOException e) {
                        //exception handling left as an exercise for the reader
                    }

                    String parsed;
                    for (String word : filetext) {
                        parsed = Jsoup.parse(word).text();        
                        System.out.println(parsed);
                        out.println(parsed);
                    }
                    out.close();
                }
            }
        }
    }
}
导入java.io.BufferedWriter;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Scanner;
导入org.jsoup.jsoup;
公共类解析器{
public static File infolder=新文件(“此处为输入文件夹路径”);
静态字符串temp=“”;
静态ArrayList=新建ArrayList();
公共静态void main(字符串[]args)引发FileNotFoundException
{
String outfolder=“输出文件夹路径在此”;
File theDir=新文件(outfolder);
//如果目录不存在,请创建它
如果(!theDir.exists()){
System.out.println(“创建目录:+outfolder”);
布尔结果=dir.mkdir();
如果(结果){
System.out.println(“创建目录”);
}
}
System.out.println(“读取文件夹“+infolder.getAbsolutePath()下的文件”);
解析文件(infolder);
//System.out.println();
}
公共静态void parseFiles(最终文件文件夹)引发FileNotFoundException
{
PrintWriter out=null;
对于(最终文件条目:folder.listFiles()){
if(fileEntry.isFile()){
temp=fileEntry.getName();
if((temp.substring(temp.lastIndexOf('.')+1,temp.length()).toLowerCase()).equals(“html”)){
System.out.println(“File=“+folder.getAbsolutePath()+”\\“+fileEntry.getName());
File File=新文件(folder.getAbsolutePath()+“\\”+fileEntry.getName());
ArrayList filetext=新的ArrayList();
扫描仪输入=新扫描仪(文件);
while(在.hasNextLine()中){
add(in.nextLine());
}
String filename=“tokenfile”+fileEntry.getName();
试一试{
out=新的PrintWriter(新的BufferedWriter(新的FileWriter(“C:/Users/bounty213/Desktop/Output/”+filename+“.txt”,true));
}
捕获(IOE异常){
//异常处理留给读者作为练习
}
字符串解析;
for(字符串字:filetext){
parsed=Jsoup.parse(word.text();
System.out.println(已解析);
out.println(已解析);
}
out.close();
}
}
}
}
}

如果您能提供您一直试图运行的代码,这将有助于我们更好地理解。逐行解析HTML文件很奇怪。为什么不想使用
parse(File-in,String-charsetName)
parse(InputStream-in,String-charsetName,String-baseUri)