Muszę zrobić pętlę, aby wygenerować 5 losowo wybranych ciąg liter, a następnie utworzyć plik tekstowy pod tą nazwą, powiedzmy w C: //, jak to zrobić? Zarówno generowanie nazwy, jak i tworzenie pliku w katalogu. Myślę, że muszę wybrać 5 liczb losowych z kodów ascii, dodać je do tablicy, a następnie przekonwertować je na odpowiedniki znaków, aby móc użyć go jako nazwy. Idk, jak przekonwertuję ich na postać i stworzę z nimi sznur, czy możesz mi pomóc?Jak wygenerować losowy nazwany plik tekstowy w języku C#?
Odpowiedz
Jeśli chcesz utworzyć nazwy plików to poczuć, umieścić znaki, które chcesz użyć w ciąg znaków i wybrać z, że:
// 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)))
Po co przyszło? Jeśli nie wyjaśnisz, co to jest, że uważasz, że jest źle, to nie może poprawić odpowiedzi. – Guffa
Sprawdź metody GetTempFileName i GetRandomFileName klasy System.IO.Path.
GetRandomFileName tworzy „kryptograficznie silne” nazwę pliku i jest bliżej jednego do co prosiłeś.
GetTempFileName tworzy unikalną nazwę pliku w katalogu - a także tworzy plik zerowy o tej samej nazwie - pomagając zapewnić jej wyjątkowość. To może być bliższe temu, czego możesz potrzebować.
+1 właśnie, co miałem odpowiedzieć :-) – galaktor
znaleźć w Google to dla ciebie (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();
}
potem wykorzystać strumienie plików w celu utworzenia i zapisania pliku.
Co z metodami Path.GetTempFileName() lub Path.GetRandomFileName()? Rozważmy również fakt, że system plików nie jest transakcyjny, a dwa równoległe procesy mogą tworzyć tę samą nazwę pliku. TempFileName() powinien zwracać unikalną nazwę (według specyfikacji), więc "być może" nie musisz się tym martwić, jeśli katalog temp może być odpowiedni dla twojego rozwiązania.
Albo można użyć GUID generowania unikalnego pliku:
Wikipedii:
Chociaż każda generowane GUID nie jest gwarancją wyjątkowy, całkowita liczba unikalnych kluczy (2^128 lub 3.4 × 10^38) jest tak duży, że prawdopodobieństwo wygenerowania dwukrotnie tej samej liczby jest nieskończenie małe.
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();
}
Użyłem tej metody wiele razy. Oczywiście nie jest to ciąg "5 liter", ale w środowisku Windows nie ma potrzeby ograniczania się do 5 liter. Korzyścią jest to, że jest "gwarantowana", że jest unikalna (nawet jeśli Wikipedia się nie zgadza). Sprawdzanie BTW (File.Exists (nazwa pliku)) jest zbędne, ponieważ nazwa pliku nie istnieje. –
Cóż, nigdy nie wiadomo - może istnieć potrzeba użycia tych 5-literowych nazw plików w przypadku, gdyby inne narzędzie przetwarzające te pliki wymagało, aby nazwy plików nie były dłuższe niż 5 liter. Byłby to WTF na stronie programisty innego narzędzia, ale wymaganie jest nadal aktualne, więc w mojej opinii mówię: "Możesz używać GUID-ów - nie są to 5 znaków, ale nadal" jest jak mówienie "Albo możesz a także po prostu nie twórz żadnego pliku "- oba nie rozwiązują problemu :-D –
- 1. wygenerować losowy plik przy użyciu skryptu powłoki
- 2. wygenerować losowy strumień bajtów z `C`
- 3. Jak wygenerować całkowicie losowy obraz?
- 4. Jak utworzyć tymczasowy plik tekstowy w C++?
- 5. Jak odczytać rosnący plik tekstowy w C++?
- 6. Jak mogę wygenerować losowy unqiue liczb w C#
- 7. Jak wygenerować losowy Uint64 w Go?
- 8. Jak wygenerować losowy tekst w NLTK 3.0?
- 9. C# Właściwość nazwany zdarzenie
- 10. Jak analizować plik tekstowy za pomocą C#
- 11. Jak utworzyć fałszywy plik tekstowy w języku Python
- 12. Jak wygenerować losowy numer pięć cyfr Java
- 13. wygenerować losowy datę w Oracle DBMS_RANDOM
- 14. Jak wygenerować plik JAR z kodem źródłowym w języku Maven
- 15. Jak wygenerować plik PNG za pomocą C#?
- 16. Wyszukaj plik tekstowy i wydrukuj powiązane wiersze w języku Python?
- 17. Jak mogę napisać plik tekstowy w języku C# ze stroną kodową inną niż UTF-8?
- 18. Przeczytaj plik tekstowy z zasobów C#
- 19. Jak odczytać i nadpisać plik tekstowy w C?
- 20. Jak odtwarzać plik mp3 w języku C++?
- 21. Jak wydrukować plik pcl w języku C#?
- 22. Jak skopiować plik w języku C#
- 23. Jak wykonać plik powłoki w języku C#?
- 24. Jak odczytać plik XML w języku C#?
- 25. Golang: Jak odczytać plik tekstowy?
- 26. Jak wygenerować plik PDF?
- 27. Jak napisać fragment kodu, aby wygenerować metodę w języku C#?
- 28. Jak mogę wygenerować plik .pfx?
- 29. Jak czytać plik tekstowy w systemie Android?
- 30. Jak napisać plik tekstowy w formacie JavaScript
pewno tam z Orens odpowiedź ponieważ mogłeś skończyć z różnymi rodzajami nielegalnych ścieżek plików – ThePower