18 Ocak 2023 Çarşamba

Files Sınıfı İle Temporary Dosya Yaratma - NIO

Giriş
Dosya yaratma için createTempFile() kullanılır. Bu metodun da 2 tane overload edilmiş hali var

İmzaları şöyle
// Belirtilen dizinde temp dosya yaratır
Path createTempFile(Path dir,
                    String prefix,
                    String suffix,

                    FileAttribute<?>... attrs) throws IOException

// Sistem dizininde temp dosya yaratır
Path createTempFile(String prefix,
                    String suffix,
                    FileAttribute<?>... attrs) throws IOException
1. Her iki metod da Path nesnesi döner. Path nesnesi toFile() metodu ile File nesnesine çevrilebilir.

2. Eğer prefix null verilirse dosya ismi rastgele üretilen sayı ile başlar
Örneğin /tmp/4024018108441457842.log

3. Eğer suffix null verilirse varsayılan suffix ".tmp" olur
Örneğin /tmp/11485851858110293663.tmp

4. Eğer suffix "" yani boş string verilirse dosya ismine dahil edilmez. 
Örneğin tmp/hello7797826277559942279

5. Hem prefix hem de suffix null ise dosya ismi sadece rastgele üretilen sayı olur
Örneğin /tmp/14576820704460531496.tmp

1. Sistem Dizininde
Dosya ismi için prefix ve suffix alır.
Örnek
Şöyle yaparız. İşletim sisteminde ayarlı temporary dizin kullanılır ve rastgele bir isim üretilir.
// C:\Users\Anghel\AppData\Local\Temp\16106384687161465188.tmp
Path tmpNoPrefixSuffix = Files.createTempFile(null, null);
Örnek
Şöyle yaparız.İşletim sisteminde ayarlı temporary dizin kullanılır belirtilen prefix ile başlayıp belirtilen suffix ile biten bir isim üretilir.
// C:\Users\Anghel\AppData\Local\Temp\log_402507375350226.txt
String customFilePrefix = "log_";
String customFileSuffix = ".txt";
Path tmpCustomPrefixAndSuffix = Files.createTempFile(customFilePrefix, customFileSuffix);
Örnek
Şöyle yaparız. İşletim sisteminde ayarlı temporary dizin kullanılır belirtilen prefix ile başlayıp belirtilen suffix ile biten bir isim üretilir.
File file = Files.createTempFile("lambda", "ser").toFile();
Örnek - Permission
Tüm sistemlerde çalışır. Şöyle yaparız
// Create a new temporary file
Path jarPath = Files.createTempFile("myfile", ".jar"); 

// Make it accessible only by the owner
File jarFile = jarPath.toFile();
boolean success = jarFile.setReadable(true, true);
if (!success) {
  ...
}
success = jarFile.setWritable(true, true);
if (!success) {
  ...
}
success = jarFile.setExecutable(true, true);
if (!success) {
  ...
}
2. Belirtilen Dizinde

Belirtilen dizinde bir geçici dosya yaratır. Bu metod File.createTempFile() metoduna tercih edilmeli. Açıklaması şöyle
The temporary files created using File.createTempFile have very unrestricted file permissions so that (at least on my system) anybody can read it. If you are writing security-sensitive application (e.g. for encrypting data), it may be a serious issue.
Dosya ismi için prefix ve suffix alır.
Örnek
Şöyle yaparız. Belirtilen dizin kullanılır belirtilen prefix ile başlayıp belirtilen suffix ile biten bir isim üretilir.
// D:\tmp\log_13299365648984256372.txt
Path customBaseDir = FileSystems.getDefault().getPath("D:/tmp");
String customFilePrefix = "log_";
String customFileSuffix = ".txt";
Path tmpCustomLocationPrefixSuffix
  = Files.createTempFile(customBaseDir, customFilePrefix, customFileSuffix);
Örnek - Permission
Sadece Linux sistemlerde çalışır. Şöyle yaparız
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;

try {

 // Create a temporary file in a specified folder + file permission
 Path path = Paths.get("/home/mkyong/test/");

 // 777
 Set<PosixFilePermission> fp =
   PosixFilePermissions.fromString("rwxrwxrwx");

  Files.createTempFile(path, null, ".log",
                      PosixFilePermissions.asFileAttribute(fp));

  } catch (IOException e) {
   ...
}



Hiç yorum yok:

Yorum Gönder