java.io.File-klasse bevat vier statische scheidingsvariabelen. Hier zullen we meer te weten komen over hen en wanneer ze te gebruiken.
- File.separator: Platformafhankelijk standaard naam-scheidingskarakter als een tekenreeks. Voor Windows is het ‘\’ en voor Unix is het ‘/’.
- File.separatorChar: Hetzelfde als separator maar het is een teken.
- File.pathSeparator: Platformafhankelijke variabele voor het scheidingskarakter van het pad. Bijvoorbeeld de lijst met paden van de PATH- of CLASSPATH-variabele gescheiden door ‘:’ in Unix-systemen en ‘;’ in Windows-systemen.
- File.pathSeparatorChar: Hetzelfde als pathSeparator maar het is een teken.
Java-bestandsscheider
Merk op dat al deze definitieve variabelen zijn en afhankelijk zijn van het systeem. Hier is het Java-programma om deze scheidingsvariabelen af te drukken.
package com.journaldev.files;
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);
}
}
Uitvoer van bovenstaand programma op een Unix-systeem:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
Uitvoer van het programma op een Windows-systeem:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
Om ons programma platformonafhankelijk te maken, zouden we altijd deze separators moeten gebruiken om een bestandspad te maken of enige systeemvariabelen zoals PATH, CLASSPATH te lezen. Hier is het codefragment dat laat zien hoe de separators correct te gebruiken.
//geen platformonafhankelijkheid, geschikt voor Unix-systemen
File fileUnsafe = new File("tmp/abc.txt");
//platformonafhankelijk en veilig te gebruiken op zowel Unix als Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");
Dat is alles voor bestandsscheiders, we zullen meer leren over java io in toekomstige berichten.