Попробуйте FileUtils
из Apache commons-io (методы listFiles и iterateFiles):
File dir = new File(".");
FileFilter fileFilter = new WildcardFileFilter("sample*.java");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
}
Чтобы решить вашу проблему с папками TestX, я сначала перебрал бы список папок:
File[] dirs = new File(".").listFiles(new WildcardFileFilter("Test*.java");
for (int i=0; i<dirs.length; i++) {
File dir = dirs[i];
if (dir.isDirectory()) {
File[] files = dir.listFiles(new WildcardFileFilter("sample*.java"));
}
}
Довольно грубое решение, но оно должно работать нормально. Если это не соответствует вашим потребностям, вы всегда можете использовать RegexFileFilter
.
То, что необходимо сделать, точно оценить вероятность, что определенное имя пользователя существует, учитывая число зарегистрированных пользователей. Позволяет говорят, что N является числом пользователей и u = 1, если пользователь u присутствует и 0, если они отсутствуют.
В первую очередь, сделайте предположение, что распределения вероятностей для каждого имени пользователя независимы друг от друга. Это не будет верным - и Вы уже придумали одну причину, почему - но это, вероятно, будет необходимо, так как это делает сбор данных и математику намного легче.
Вы испытываете необходимость в большом количестве данных из сайтов с именами зарегистрированного пользователя и общим количеством пользователей того сайта. Теперь, возьмите любое определенное имя пользователя и вообразите свои точки данных на 2-м графике (с N на x и u на y), там будет одной горизонтальной строкой точек в y=0 и другого в y=1. Вы можете или мусорное ведро ось X, как Вы предполагаете и берете среднюю y координату всех точек данных в мусорном ведре для получения дискретной функции, или Вы могли попытаться соответствовать точкам на графике к некоторому классу функций. Я действительно не знаю то, что тот класс функций, которые были бы - возможно, некоторый закон о питании? (Я думаю о законе Zipf).
У Вас теперь есть распределения вероятностей для применения правила Байеса. Я не знаю, какой предшествующий для N Вы хотели бы использовать. Равномерное распределение (некоторое большое количество) не сделало бы предположений, но я предположу, что большинство сайтов имеет небольшую базу пользователей.
Я подозреваю, что для создания этой работы при выборке пользователей от сайта, необходимо будет сделать так для определенной группы пользователей. Я держу пари, что популярность имен пользователей будет иметь очень длинный хвост и таким образом, случайная выборка пользователей собирается дать Вам много очень нечасто используемых имен и поэтому большое неинформативное доказательство.
Править: У меня была другая мысль; на большинстве форумов (и на StackOverflow) у пользователей есть последовательные идентификаторы пользователей, таким образом, можно использовать единственный сайт с большим количеством пользователей, чтобы дать Вам оценки для всего меньшего N.
Я думаю, что это - классная идея!
Вы можете соединять набор данных при помощи UserNameCheck.com для некоторых различных имен пользователей и перекрестных ссылок на результаты с установленными размерами базы пользователей тех сайтов, которые выделяют их.
Примечание: тот веб-сайт, кажется, не проверяет, допустимы ли имена пользователей для сайта, так например, он думает, что Gmail позволил бы Вам зарегистрировать "nick@gmail.com" даже при том, что это слишком коротко.
Единственный путь состоит в том, чтобы получить большой набор взятых имен пользователей в системах, для которых Вы знаете размер базы пользователей. Данные могут быть скошены в базах пользователей, где определенные имена более распространены. Даже крошечная база пользователей от форума Властелина колец будет, вероятно, содержать имя пользователя Strider, например.