У File
класі є два рядки separator
та pathSeparator
.
Яка різниця? Коли я повинен використовувати один над іншим?
У File
класі є два рядки separator
та pathSeparator
.
Яка різниця? Коли я повинен використовувати один над іншим?
Відповіді:
Якщо ви маєте на увазі File.separator
і File.pathSeparator
тоді:
File.pathSeparator
використовується для розділення окремих шляхів до файлу у списку шляхів до файлів. Розглянемо, що стосується Windows, змінної середовища PATH. Ви використовувати , ;
щоб відокремити шляху до файлів так на Windows , File.pathSeparator
буде ;
.
File.separator
це /
або \
те, що використовується для розділення шляху до певного файлу. Наприклад, у Windows це \
абоC:\Documents\Test
File.separator
це File.fileSeparator
стосуєтьсяFile.pathSeparator
File
. Я думаю, що частина файлу мається на увазі. Але хто знає, чому вони зробили багато того, що зробили з Java.
Ви використовуєте роздільник, коли ви будуєте шлях до файлу. Так в Unix роздільник є /
. Тож якби ви хотіли побудувати шлях до Unix /var/temp
, зробили б це так:
String path = File.separator + "var"+ File.separator + "temp"
Ви використовуєте, pathSeparator
коли ви маєте справу зі списком файлів, як на класному шляху. Наприклад, якщо ваша програма взяла список аркушів як аргумент, стандартним способом форматування цього списку в unix є:/path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar
Тож давши список файлів, ви зробили б щось подібне:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
/var/temp
його марно використовувати, File.separator
оскільки у вас вже є код, який залежить від платформи. Можливо також жорсткий код шляху.
java.io.File
клас містить чотири статичні роздільні змінні. Для кращого розуміння розберемося за допомогою якогось коду
Зауважте, що всі ці є кінцевими змінними та залежать від системи.
Ось програма java для друку цих змінних роздільника. 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);
}
}
Вихід вищезгаданої програми в системі Unix:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
Вихід програми в системі Windows:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
Щоб зробити нашу програмну платформу незалежною, ми завжди повинні використовувати ці роздільники для створення шляху до файлів або для читання будь-яких системних змінних, таких як PATH, CLASSPATH.
Ось фрагмент коду, який показує, як правильно використовувати роздільники.
//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
І char
повернутим вище способів зробити повертають правильно відформатований зворотну косу риску (якщо на Windows).