Czy istnieje sposób kontrolowania losowych cyfr dodawanych do nazwy pliku podczas tworzenia pliku tempFile? Na przykład. jeśli napiszę File.createTempFile("abc",".pdf")
, utworzy plik o nazwie abc12323543121.pdf
. Zamiast tych cyfr można dołączyć znacznik czasu? Potrzebuję tego, ponieważ dla każdego tworzonego pliku muszę dodać znacznik czasu do pliku, co powoduje, że nazwa pliku jest dość długa. Tak więc, zamiast losowo generowanych cyfr, gdybym mógł po prostu użyć znacznika czasu, byłoby naprawdę świetnie.Uzyskiwanie kontroli nad nazwą pliku tymczasowego utworzonego w języku Java
Odpowiedz
Wygląda na to, że API nie udostępnia tego bezpośrednio. Możesz jednak zajrzeć do kodu źródłowego File.createTempFile()
, aby zobaczyć, w jaki sposób jest zaimplementowany, a następnie samodzielnie zaimplementować wymaganą metodę.
Zasadniczo createTempFile()
tworzy obiekt File
z zamierzoną nazwą pliku, a następnie używa FileSystem.createFileExclusively()
do utworzenia pliku. Ta metoda zwraca false
, jeśli plik już istnieje, w którym to przypadku nazwa pliku jest modyfikowana (przy użyciu innej liczby losowej), a tworzenie jest ponawiane.
Można zastosować to samo podejście, ale należy pamiętać, że FileSystem
to klasa prywatna pakietu, dlatego nie można jej używać we własnej metodzie. Zamiast tego użyj File.createNewFile()
, aby utworzyć plik atomowo. Ta metoda zwraca także false
, jeśli plik już istnieje, więc możesz go użyć w podobnej pętli, jak createTempFile()
, używając metody createFileExclusively()
.
Mam zaimplementowałem własną metodę tworzenia nowego pliku w temp dir na podstawie danych wejściowych z obu odpowiedzi. Dziękuję. – Adarsh
Można utworzyć własną metodę użytkową do tworzenia plików tymczasowych. Zasadniczo pliki tymczasowe są przechowywane w katalogu tymczasowym w następujący sposób:
public File createTempFile(String prefix, String suffix){
String tempDir = System.getProperty("java.io.tmpdir");
String fileName = (prefix != null ? prefix : "") + System.nanoTime() + (suffix != null ? suffix : "") ;
return new File(tempDir, fileName);
}
Użyłem rozwiązania dostarczonego przez Andreasa, aby utworzyć plik atomicznie w katalogu tymczasowym zgodnie z sugestią użytkownika. Dziękuję Ci. – Adarsh
- 1. Zapisywanie do pliku tymczasowego w java
- 2. Tworzenie tymczasowej nazwy pliku tymczasowego
- 3. Tworzenie tymczasowego folderu w java
- 4. Uzyskiwanie ścieżki folderu tymczasowego użytkownika w systemie Windows
- 5. Uzyskaj nazwę pliku z lokalizacji pliku w języku Java
- 6. GWT Logger: Brak kontroli nad wyjściem debugowania?
- 7. Jak zdobyć wszystkie dzieci kontroli nad rodzicami?
- 8. Jak uzyskać rozmiar pliku tymczasowego w Androidzie?
- 9. Uzyskiwanie dostępu do układu Qt utworzonego w interfejsie z kodu?
- 10. Potrzebujesz pomocy w przejściu kontroli nad głównym wyjściem mojego komputera Głośnik
- 11. Uzyskiwanie wartości ciągu z wyliczenia w języku Java
- 12. Zrozumienie listy w języku Python - dostęp do ostatnio utworzonego elementu?
- 13. Uzyskiwanie dostępu do zaszyfrowanego pliku pgp w języku Ruby
- 14. Jak uzyskać zawartość pliku tymczasowego za pośrednictwem formularza
- 15. pętli nad tablicy w Go języku
- 16. Wieloplatformowy sposób uzyskiwania katalogu tymczasowego w języku Python
- 17. Uzyskiwanie SuperInterfaces w java
- 18. Jak utworzyć std :: ofstream do pliku tymczasowego?
- 19. Zapisywanie pliku z nazwą urządzenia
- 20. W szczególności Uzyskiwanie ścieżki systemowej TEMP w języku C#
- 21. Uzyskiwanie bezpiecznych stron internetowych pracujących nad Tornado
- 22. uzyskiwanie Gii do pracy nad Yii 2.0
- 23. Usuwanie linii z pliku w języku C
- 24. Uzyskiwanie dostępu do obiektu Java w obiekcie Java w języku C przy użyciu JNI
- 25. Jak analizować dane w Talend z Java (pochodzące z wcześniej utworzonego pliku .txt)?
- 26. Jak analizować negatywnie w języku Java w języku Java
- 27. W języku Java: zastąp ciąg znaków w pliku MS Word
- 28. Zdarzenie przechodzenia zdarzenia kontroli nad dzieckiem do formantu nadrzędnego
- 29. Spring Security/JSF/Hibernate Przypadkowe przejęcie kontroli nad Tomcat?
- 30. Klon() w języku Java
Czy istnieje powód, dla którego tworzysz pliki jako pliki tymczasowe, a nie w zwykły sposób? W ten sposób będziesz mieć pełną kontrolę nad ich nazwiskami. – Philipp
'createTempFile()' jest odpowiedzialny za uczynienie tego pliku unikalnym, nawet jeśli wywołasz go 1000 razy w ciągu jednej sekundy. Musi mieć możliwość dodania prefiksu lub postfiksu. –
@Philipp W końcu wdrożyłem go w normalny sposób, ale w katalogu temp, który jest mniej więcej podobny do metody createTempFile, ale z większą kontrolą losowego nazewnictwa. – Adarsh