Я не уверен, чего именно вы ожидаете от этого кода, но сейчас он фактически ничего не делает.
Вы много раз повторяете цикл, создавая экземпляр Formatter
каждый раз. Это не файл; вместо этого это класс, который знает, как заменить токены в строках для создания других строк.
Я думаю, вы озадачены описанием конструктора, который вы вызываете, и целью класса в целом. В качестве первого аргумента конструктор принимает имя файла, который будет использоваться для вывода - в вашем случае это всегда будет %s.txt
. Второй аргумент - это имя поддерживаемой кодировки, используемой для кодирования строки в файл.
Этот код всегда будет неудачным, потому что:
- Ваша переменная
I_S
, например, "56437890", не является допустимой кодировкой (тогда как "UTF-8" будет). Следовательно, конструктор, вероятно, сгенерирует исключение при попытке разработать схему кодирования.
- Даже если кодировка была чудесным образом верна, вы все равно пытаетесь записывать в один и тот же файл (
%s.txt
) каждый раз, чтобы не получить желаемого поведения с несколькими файлами.
Эта строка может даже не быть допустимым именем файла, в зависимости от вашей ОС, и поэтому, если Formatter попытается создать файл, он выдаст исключение.
- Если оба аргумента чудесным образом сработают, вы все равно ничего не делаете с форматером, поэтому у него нет чего-либо, что можно записать в файл, который, таким образом, не может быть создан.
- Наконец, вы не обновляете свою случайную переменную (
I_S
) в цикле - она устанавливается один раз , а затем сохраняет одно и то же значение навсегда. Так что даже , если бы все вышеперечисленные проблемы не были проблемами, вы все равно будете создавать один и тот же (один) файл со случайным именем снова и снова.
И, как я заметил в комментариях, , когда не получается, вы ловите и глотаете исключение, поэтому у вас нет абсолютно никакой возможности узнать , что пошло не так.
По сути, я думаю, что вы не понимаете цели класса Formatter, и, поскольку я не знаю, чего вы пытаетесь достичь (файлы должны быть пустыми? Есть конкретный текст?), Я не могу предложить что-то, что определенно работает. Однако, если вы просто хотите создать пустые файлы, попробуйте что-то вроде этого в вашем цикле:
String filename = "%s.txt".format(I_S);
File file = new File(filename);
file.createNewFile();
// Add some logic to update the random variable here!
В заключение, ответ adarshr совершенно прав, что у вас есть нетривиальный шанс повторить случайные числа, поэтому вы не получите столько файлов, сколько ожидаете. В ответе описан хороший способ избежать этого, и его стоит придерживаться.