In File
sınıfında orada iki dizeleri, separator
ve pathSeparator
.
Fark ne? Birini diğeri ne zaman kullanmalıyım?
In File
sınıfında orada iki dizeleri, separator
ve pathSeparator
.
Fark ne? Birini diğeri ne zaman kullanmalıyım?
Yanıtlar:
Demek istiyorsan File.separator
ve File.pathSeparator
sonra:
File.pathSeparator
dosya yolları listesindeki tek tek dosya yollarını ayırmak için kullanılır. PATH ortam değişkeni pencerelerde düşünün. Bir kullanmak ;
Windows üzerinde öylesine dosya yollarını ayırmak File.pathSeparator
olacaktır ;
.
File.separator
, ya /
da \
yolu belirli bir dosyaya bölmek için kullanılır. Örneğin Windows'ta \
veyaC:\Documents\Test
File.separator
edilmelidir File.fileSeparator
için ilgiliFile.pathSeparator
File
. Bence dosya kısmı ima ediliyor. Ama Java ile yaptıklarının çoğunu neden yaptığını kim bilebilir.
Bir dosya yolu oluştururken ayırıcı kullanırsınız. Yani unix'de ayırıcı /
. Unix yolunu oluşturmak /var/temp
istiyorsanız, bunu şu şekilde yaparsınız:
String path = File.separator + "var"+ File.separator + "temp"
pathSeparator
Sınıf yolundaki gibi bir dosya listesi ile uğraşırken kullanın . Örneğin, uygulamanız kavanoz listesini bağımsız değişken olarak aldıysa, bu listeyi unix'te biçimlendirmenin standart yolu şöyledir:/path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar
Dosyaların bir listesi verildiğinde böyle bir şey yapardınız:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
/var/temp
için kullanmak işe yaramaz File.separator
. Yolu da kodlayabilir.
java.io.File
sınıfı dört statik ayırıcı değişken içerir. Daha iyi anlamak için, bazı kodların yardımıyla anlayalım
Tüm bunların nihai değişkenler ve sisteme bağlı olduğunu unutmayın.
İşte bu ayırıcı değişkenleri yazdırmak için java programı. FileSeparator.java
import java.io.File;
public class FileSeparator {
public static void main(String[] args) {
System.out.println("File.separator = "+File.separator);
System.out.println("File.separatorChar = "+File.separatorChar);
System.out.println("File.pathSeparator = "+File.pathSeparator);
System.out.println("File.pathSeparatorChar = "+File.pathSeparatorChar);
}
}
Yukarıdaki programın Unix sisteminde çıktısı:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
Programın Windows sisteminde çıktısı:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
Program platformumuzu bağımsız hale getirmek için her zaman dosya ayırıcı oluşturmak veya PATH, CLASSPATH gibi sistem değişkenlerini okumak için bu ayırıcıları kullanmalıyız.
Ayırıcıların doğru şekilde nasıl kullanılacağını gösteren kod snippet'i.
//no platform independence, good for Unix systems
File fileUnsafe = new File("tmp/abc.txt");
//platform independent and safe to use across Unix and Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");
String
Ve char
yukarıda belirtilen yöntemlerle döndü (Windows üzerinde ise) düzgün biçimlendirilmiş ters eğik çizgi dönmek yoktur.