1 つのフォルダに約 100 個のファイルがあります。各ファイルにはこのようなデータがあり、各行はユーザー ID に似ています。
960904056
6624084
1096552020
750160020
1776024
211592064
1044872088
166720020
1098616092
551384052
113184096
136704072
そして、その新しい大きなファイルでユーザーIDの総数が1000万になるまで、そのフォルダーから新しい大きなファイルにファイルをマージし続けようとしています。
特定のフォルダーからすべてのファイルを読み取ることができ、リンクされたハッシュセット内のそれらのファイルからユーザー ID を追加し続けます。そして、ハッシュセットのサイズが 1,000 万であるかどうかを確認し、1,000 万の場合は、それらすべてのユーザー ID を新しいテキスト ファイルに書き込むことを考えていました。それは実現可能な解決策ですか?
その 1000 万という数字は構成可能である必要があります。将来、その 1000 万 1o 50Million を変更する必要がある場合は、それができるはずです。
以下は私がこれまでに持っているコードです
public static void main(String args[]) {
File folder = new File("C:\\userids-20130501");
File[] listOfFiles = folder.listFiles();
Set<String> userIdSet = new LinkedHashSet<String>();
for (int i = 0; i < listOfFiles.length; i++) {
File file = listOfFiles[i];
if (file.isFile() && file.getName().endsWith(".txt")) {
try {
List<String> content = FileUtils.readLines(file, Charset.forName("UTF-8"));
userIdSet.addAll(content);
if(userIdSet.size() >= 10Million) {
break;
}
System.out.println(userIdSet);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
これについて何か助けていただけますか?そして、同じプロセスを行うためのより良い方法はありますか?