2016-04-11 5 views
0

Ich habe die Antworten des Benutzers in eine .TXT-Datei übersetzt und an einen anderen Ort verschoben, wo ich alle Antworten speichern würde. Ich würde verlangen, dass .TXT bei jedem Start der Anwendung anders benannt wird, so dass die Datei nicht ersetzt wird. Ich dachte daran, Zeitstempel neben dem ursprünglichen Namen anzubringen, aber ich bin mir nicht sicher, wie ich das machen soll.So benennen Sie gerade erstellte .TXT-Dateien so, dass der Dateiname jedes Mal anders ist

Mein Code:

require 'FileUtils' 

puts "1) How would you rate the manual? Range: 1-10." 
rating_range = gets.to_i 

puts "2) How could the manual be improved? Type your answer below:" 
improvement = gets.chomp 

puts "3) What would you add to the manual. Type your answer below:" 
addition = gets.chomp 

puts "4) Indicate any general comments you would like to add:" 
general_comments = gets.chomp 


File.open("Survey.txt", 'w') { |file| 
file << "1) #{rating_range}\n" 
file << "2) #{improvement}\n" 
file << "3) #{addition}\n" 
file << "4) #{general_comments}\n" 
} 
FileUtils.mv('/Documents/Survey.txt', '/Stuff') 

Die Datei Survey.txt sollte jedesmal anders benannt werden. Irgendwelche Ideen? Dies wird hängen Sie die Zeit in Sekunden seit der UNIX-Epoche an den Dateinamen

Antwort

1

Zeitstempel sind nicht wirklich garantiert einzigartig. Obwohl es unwahrscheinlich ist, dass Sie genaue Duplikate erhalten, ist es immer noch möglich. Wenn Sie eine Datei Lösung suchen, können Sie ein UUID verwenden:

require 'securerandom' 
uuid = SecureRandom.uuid 
File.open("Survey-#{uuid}.txt", 'w') { |file| 
    ... 
} 

Natürlich für eine robustere Lösung, sollten Sie eine Datenbank mit sein. :)

+0

Danke. Ich habe ein 'false' an den Namen der Datei angehängt. Was mache ich falsch? –

+0

Hoppla. Ich hatte einen Fehler in meinem Code. Ich hatte die Anforderung auf der UUID-Leitung, wenn ich den Anruf zu SecureRandom.uuid hätte haben sollen. Ich habe die Antwort bearbeitet. – djsumdog

+0

Danke, es funktioniert jetzt perfekt. Was ich jetzt nicht machen kann, ist den Code mit Ocra zu kompilieren. Ich benutze diesen Befehl wie üblich: 'ocra * .rb'. Die Kompilierung startet und beendet ohne Fehler, aber die ausführbare Datei wird nicht generiert. Irgendwelche Ideen? –

0

Versuchen

File.open("Survey.txt", 'w') { |file| 

mit

File.open("Survey_" + Time.now.to_i.to_s + ".txt", 'w') { |file| 

ersetzen. Wenn Sie nur Time verwenden, werden Sie am Ende Zeichen wie Doppelpunkte im Dateinamen haben, was je nach Dateisystem problematisch sein kann.

Möchten Sie nur Dateien unterscheiden, oder muss der Zeitstempel lesbar sein?

Verwandte Themen