-1

基本的にWebサイトからデータをスクラップして.csvファイルを作成するJavaアプリケーションを作成しました。NetBeans で実行して 34kb のファイルを作成すると問題なく動作します。しかし、ビルドして .JAR 実行可能ファイルを実行すると、同じファイルが作成されますが、ファイルのサイズは 4kb で、すべてのデータが含まれていません。プロジェクトを Java 1.8 でビルドします。この問題の背後にある理由が実際にはわかりません。Javaのバージョンの問題でしょうか?よろしくお願いします。以前にここにコードを追加しなかったことをお詫びします。これが私のプロジェクトのコードです。

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.Locale;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

//this program is for open-end-summary
/**
 *
 * @author talha
 */
public class ComMufapScraping {

    boolean writeCSVToConsole = true;
    boolean writeCSVToFile = true;
    boolean sortTheList = true;
    boolean writeToConsole;
    boolean writeToFile;
    public static Document doc = null;
    public static Elements tbodyElements = null;
    public static Elements elements = null;
    public static Elements tdElements = null;
    public static Elements trElement2 = null;
    public static String Dcomma = ",";
    public static String line = "";
    public static ArrayList<Elements> sampleList = new ArrayList<Elements>();

    public static void createConnection() throws IOException {
        System.setProperty("http.proxyHost", "191.1.1.202");
        System.setProperty("http.proxyPort", "8080");
        String tempUrl = "http://www.mufap.com.pk/nav_returns_performance.php?tab=01";
        doc = Jsoup.connect(tempUrl).get();
    }

    public static void parsingHTML() throws Exception {
        for (Element table : doc.getElementsByTag("table")) {

            for (Element trElement : table.getElementsByTag("tr")) {
                trElement2 = trElement.getElementsByTag("tr");
                tdElements = trElement.getElementsByTag("td");
                File fold = new File("C:\\open-end-smry.csv");
                fold.delete();
                File fnew = new File("C:\\open-end-smry.csv");
                FileWriter sb = new FileWriter(fnew, true);
                if (trElement.hasClass("tab-data1")) {
                    for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) {
                        if (it.hasNext()) {
                            sb.append("\r\n");

                        }

                        for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) {
                            Element tdElement2 = it.next();
                            final String content = tdElement2.text();
                            if (it2.hasNext()) {

                                sb.append(formatData(content));
                                sb.append("   ,   ");

                            }
                            if (!it.hasNext()) {
                                String content1 = content.replaceAll(",$", " ");
                                sb.append(formatData(content1));
                                //it2.next();

                            }
                        }

                        System.out.println(sb.toString());
                        sb.flush();
                        sb.close();
                    }
                }
                System.out.println(sampleList.add(tdElements));

            }
        }
    }
    private static final SimpleDateFormat FORMATTER_MMM_d_yyyy = new SimpleDateFormat("MMM d, yyyy", Locale.US);
    private static final SimpleDateFormat FORMATTER_dd_MMM_yyyy = new SimpleDateFormat("dd-MMM-YYYY", Locale.US);

    public static String formatData(String text) {
        String tmp = null;

        try {
            Date d = FORMATTER_MMM_d_yyyy.parse(text);
            tmp = FORMATTER_dd_MMM_yyyy.format(d);
        } catch (ParseException pe) {
            tmp = text;
        }

        return tmp;
    }

    public static void main(String[] args) throws IOException, Exception {
        createConnection();
        parsingHTML();

    }

}

プロジェクトをビルドした後のログ cat ファイルは次のとおりです。

open_end_smry\build\generated-sources\ap-source-output 1 つのソースファイルを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\build\classes にコンパイルしています 警告: [オプション] ブートストラップクラスパスが - と組み合わせて設定されていませんsource 1.7 1 warning compile: Created dir: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist 1 つのファイルを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\build にコピー ライブラリを C: にコピー\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\lib. jar の構築: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar Ant を使用せずにコマンドラインからこのアプリケーションを実行するには、次を試してください: java -jar "C:\Users\talha\Documents \NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar" jar: ビルド成功 (合計時間: 0 秒) \Users\talha\Documents\NetBeansProjects\com.open_end_smry\build\classes 警告: [オプション] ブートストラップ クラス パスが -source 1.7 と組み合わせて設定されていません 1 警告 コンパイル: 作成されたディレクトリ: C:\Users\talha\Documents\NetBeansProjects\ com.open_end_smry\dist 1 つのファイルを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\build にコピー ライブラリを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\lib にコピーします。jar の構築: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar Ant を使用せずにコマンドラインからこのアプリケーションを実行するには、次を試してください: java -jar "C:\Users\talha\Documents \NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar" jar: ビルド成功 (合計時間: 0 秒) \Users\talha\Documents\NetBeansProjects\com.open_end_smry\build\classes 警告: [オプション] ブートストラップ クラス パスが -source 1.7 と組み合わせて設定されていません 1 警告 コンパイル: 作成されたディレクトリ: C:\Users\talha\Documents\NetBeansProjects\ com.open_end_smry\dist 1 つのファイルを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\build にコピー ライブラリを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\lib にコピーします。jar の構築: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar Ant を使用せずにコマンドラインからこのアプリケーションを実行するには、次を試してください: java -jar "C:\Users\talha\Documents \NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar" jar: ビルド成功 (合計時間: 0 秒) [オプション] ブートストラップ クラス パスが -source 1.7 と組み合わせて設定されていません 1 警告 compile: Created dir: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist Copying 1 file to C:\Users\talha\Documents\ NetBeansProjects\com.open_end_smry\build ライブラリを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\lib にコピーします。jar の構築: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar Ant を使用せずにコマンドラインからこのアプリケーションを実行するには、次を試してください: java -jar "C:\Users\talha\Documents \NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar" jar: ビルド成功 (合計時間: 0 秒) [オプション] ブートストラップ クラス パスが -source 1.7 と組み合わせて設定されていません 1 警告 compile: Created dir: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist Copying 1 file to C:\Users\talha\Documents\ NetBeansProjects\com.open_end_smry\build ライブラリを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\lib にコピーします。jar の構築: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar Ant を使用せずにコマンドラインからこのアプリケーションを実行するには、次を試してください: java -jar "C:\Users\talha\Documents \NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar" jar: ビルド成功 (合計時間: 0 秒) \Users\talha\Documents\NetBeansProjects\com.open_end_smry\build ライブラリを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\lib にコピーします。jar の構築: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar Ant を使用せずにコマンドラインからこのアプリケーションを実行するには、次を試してください: java -jar "C:\Users\talha\Documents \NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar" jar: ビルド成功 (合計時間: 0 秒) \Users\talha\Documents\NetBeansProjects\com.open_end_smry\build ライブラリを C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\lib にコピーします。jar の構築: C:\Users\talha\Documents\NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar Ant を使用せずにコマンドラインからこのアプリケーションを実行するには、次を試してください: java -jar "C:\Users\talha\Documents \NetBeansProjects\com.open_end_smry\dist\com.open_end_smry.jar" jar: ビルド成功 (合計時間: 0 秒)

4

1 に答える 1

1

ループ内にファイルの削除機能があるため、ファイルはすべてのループで削除されます。これらの部分をループの外に置きます:

   public static void parsingHTML() throws Exception {
        File fold = new File("C:\\open-end-smry.csv");
        fold.delete();
        for (Element table : doc.getElementsByTag("table")) {

            for (Element trElement : table.getElementsByTag("tr")) {
                trElement2 = trElement.getElementsByTag("tr");
                tdElements = trElement.getElementsByTag("td");
                File fnew = new File("C:\\open-end-smry.csv");
                FileWriter sb = new FileWriter(fnew, true);
                if (trElement.hasClass("tab-data1")) {
                    for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) {
                        if (it.hasNext()) {
                            sb.append("\r\n");

                        }

                        for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) {
                            Element tdElement2 = it.next();
                            final String content = tdElement2.text();
                            if (it2.hasNext()) {

                                sb.append(formatData(content));
                                sb.append("   ,   ");

                            }
                            if (!it.hasNext()) {
                                String content1 = content.replaceAll(",$", " ");
                                sb.append(formatData(content1));
                                //it2.next();

                            }
                        }

                        System.out.println(sb.toString());
                        sb.flush();
                        sb.close();
                    }
                }
                System.out.println(sampleList.add(tdElements));

            }
        }
    }
于 2016-04-27T07:23:57.130 に答える