@d_shister

Как получить физический адрес файла средствами Java(не смонтированного раздела)?

Мне надо написать функцию, которая будет возвращать суммарный объём доступного дискового пространства по списку заданных на вход строк(путь к директории): long getTotalSpace(String pathDir1, String pathDir2){ ... }.

Проблема заключается в том, что pathDir1 и pathDir2 могут быть на одном смонтированном раздела, в этом случае TotalSpace суммировать не нужно. Я не могу определить реальный путь к файлу

Пытался использовать toRealPath(), getCanonicalPath(), getAbsolutePath() - выводит символическую ссылку

Например, указываю pathDir1 = /dir1/dor1_1 - выводит тоже самое, а нужно: /dev/mapper/disk_01/dor1_1

Подскажите, пожалуйста решение
  • Вопрос задан
  • 298 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Ix_Didicus
Посмотрите в сторону пакета java.nio.file.
Например, в классе Files есть интересный метод isSameFile. Я по-быстрому набросал вот такой код:
import java.nio.file.Files;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Path;

public class UnixPath{
	public static void main(String[] args) throws Exception {
		Path path1 = FileSystems.getDefault().getPath(args[0]);
		Path path2 = FileSystems.getDefault().getPath(args[1]);
		System.out.println(Files.isSameFile(path1, path2));
	}
}

Мне пока лень перезагружаться в Линукс, но на винде он отработал как надо (я передал в качестве параметров настоящее имя папки и хардлинк, ведущий на неё же, выдало true). Даже если это не то, попробуйте внимательно изучить пакет java.nio, если где-то есть ответ на ваш вопрос, то, скорее всего, он там.
edit: Проверил в Линуксе на симлинке, тоже true.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы