Мне нужно создать цикл для создания 5 случайных символов, а затем создать текстовый файл под этим именем, скажем в C: //, как я это сделаю? И генерация имени, и создание файла в каталоге. Я думаю, что мне нужно выбрать 5 случайных чисел из кодов ascii, чтобы добавить их в массив, а затем преобразовать их в эквиваленты символов, чтобы иметь возможность использовать его в качестве имени. Idk, как я буду преобразовывать их в персонаж и составлять строку с ними, не могли бы вы мне помочь?Как сгенерировать случайный текстовый файл в C#?
ответ
Если вы хотите создать имена файлов самостоятельно, вы, поставить символы, которые вы хотите использовать в строке и выбрать из этого:
// selected characters
string chars = "2346789ABCDEFGHJKLMNPQRTUVWXYZabcdefghjkmnpqrtuvwxyz";
// create random generator
Random rnd = new Random();
string name;
do {
// create name
name = string.Empty;
while (name.Length < 5) {
name += chars.Substring(rnd.Next(chars.Length), 1);
}
// add extension
name += ".txt";
// check against files in the folder
} while (File.Exists(Path.Compbine(folderPath, name)))
Почему downvote? Если вы не объясните, что это такое, что вы считаете неправильным, оно не может улучшить ответ. – Guffa
Посмотрите на методы GetTempFileName и GetRandomFileName класса System.IO.Path.
GetRandomFileName создает «криптостойкого» имя файла, и чем ближе к тому, что вы просили.
GetTempFileName создает уникальное имя файла в каталоге - а также создает файл с нулевым байтом с этим именем - помогая обеспечить его уникальность. Это может быть ближе к тому, что вам действительно нужно.
+1 только то, что я собирался ответить :-) – galaktor
нашел это на Google для вас (source here):
/// <summary>
/// Generates a random string with the given length
/// </summary>
/// <param name="size">Size of the string</param>
/// <param name="lowerCase">If true, generate lowercase string</param>
/// <returns>Random string</returns>
private string RandomString(int size, bool lowerCase)
{
StringBuilder builder = new StringBuilder();
Random random = new Random();
char ch ;
for(int i=0; i<size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))) ;
builder.Append(ch);
}
if(lowerCase)
return builder.ToString().ToLower();
return builder.ToString();
}
После этого, используйте потоки файлов для создания и записи файла.
Что касается методов Path.GetTempFileName() или Path.GetRandomFileName()? Рассмотрим также тот факт, что файловая система не является транзакционной, а два параллельных процесса могут создавать одно и то же имя файла. TempFileName() должен возвращать уникальное имя (по спецификации), поэтому «возможно» вам не нужно заботиться об этом, если каталог temp может быть в порядке для вашего решения.
Или вы могли бы использовать GUID для создания уникального имени файла:
Википедии:
Хотя каждый генерироваться GUID не гарантированно быть уникальным, общее количество уникальных ключей (2^128 или 3.4 × 10^38) настолько велика, что вероятность того, что одно и то же число генерируется дважды, бесконечно мала.
string text = "Sample...";
string path = "D:\\Temp\\";
if (!path.EndsWith("\\"))
path += "\\";
string filename = path + Guid.NewGuid().ToString() + ".txt";
while (File.Exists(filename))
filename = path + Guid.NewGuid().ToString() + ".txt";
TextWriter writer = null;
try
{
writer = new StreamWriter(filename);
writer.WriteLine(text);
writer.Close();
}
catch (Exception e)
{
MessageBox.Show("Exception occured: " + e.ToString());
}
finally
{
if (writer != null)
writer.Close();
}
Я использовал этот метод много раз. Очевидно, что это не «строка с 5 буквами», как в запросе, но в среде Windows нет необходимости ограничивать себя 5 буквами. Выгода здесь в том, что она «гарантирована» уникальной (даже если Википедия не согласна). Проверка BTW (File.Exists (filename)) избыточна, поскольку имя файла не будет существовать. –
Ну, вы никогда не знаете - может понадобиться эти 5 буквенных имен файлов, если другой инструмент для обработки этих файлов требует, чтобы имена файлов были не более 5 букв. Это будет WTF на стороне разработчика другого инструмента, но это требование все еще существует, поэтому я, по-моему, говорю: «Вы можете использовать GUID - они не имеют 5 символов в длину, но все равно« походит на высказывание «Или вы можете а также просто не создавать файл вообще »- оба не решают его проблемы: -D –
- 1. C++ Как сгенерировать случайный путь
- 2. Как сгенерировать текстовый файл с помощью XSLT
- 3. Как сгенерировать случайный 256-битный гексагон в c или C++?
- 4. C# Текстовый текстовый файл
- 5. Нужно преобразовать ZIP-файл в случайный текстовый файл
- 6. Сгенерировать текстовый файл с помощью php
- 7. Как сгенерировать случайный двойник между 0 и переменной в C++
- 8. Как сгенерировать случайный РДД в Java Спарк
- 9. Как сгенерировать случайный матричный файл на HDFS с искру
- 10. Случайный цветной текстовый jquery
- 11. Как сгенерировать файл mhtml в C++?
- 12. Как анализировать текстовый файл C++?
- 13. C# Как изменить текстовый файл
- 14. Как сгенерировать не растущий (int) случайный массив C#?
- 15. Сгенерировать читаемый случайный уникальный идентификатор
- 16. Сложный текстовый файл C++ IO
- 17. Как написать текстовый текст в текстовый файл в C#?
- 18. Python: Как сгенерировать случайный номер телефона?
- 19. Как сгенерировать большой случайный токен, используя PHP
- 20. Как сгенерировать текстовый файл журнала изменений из Subversion
- 21. Перезапись текстовый файл в C
- 22. C++ Текстовый файл Чтение
- 23. Прочитать текстовый файл C#
- 24. C++ Редактировать текстовый файл?
- 25. Невозможно записать случайный выбор из списка в текстовый файл
- 26. Прочитать текстовый файл в C++
- 27. Запись в текстовый файл C#
- 28. текстовый файл, читающий в C#
- 29. Текстовый файл в видеофайл C#
- 30. читать текстовый файл в C++
Я определенно пойти с Orens ответ, потому что у вас могут быть всевозможные незаконные пути к файлу – ThePower