Мне нужно найти набор деталей о файле общего доступа samba, используя код Java с JCIFS. Хотя getDiskFreeSpace () печатает значение, «length ()», то есть общий размер, каждый раз выводится как 0. Мне нужен метод, который мог бы помочь мне определить этот общий размер.
Кто-нибудь знает подобный API, который я мог бы попробовать, или что я должен сделать, чтобы напечатать значение, а не 0? Фрагмент из кода:
try
{
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("*****", "username", "password");
SmbFile smb = new SmbFile("smb://*****/Global/FR/342/WM_GER",auth);
smb.connect();
System.out.println("free space : "+smb.getDiskFreeSpace());
System.out.println("total space : "+smb.length()); // prints 0
Long percent = (smb.length() - smb.getDiskFreeSpace())/smb.length(); // gives exception because length is 0
System.out.println("percent : "+percent);
BigDecimal filesystemUsedSpace = BigDecimal.valueOf(smb.getDiskFreeSpace());
System.out.println("filesystemUsedSpace "+filesystemUsedSpace);
System.out.println("smb.getDiskFreeSpace() "+smb.getDiskFreeSpace());
System.out.println("smb.getContentLength() "+smb.getContentLength());
System.out.println("smb.getContentLengthLong() "+smb.getContentLengthLong());
System.out.println("smb.getType() "+smb.getType());
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SmbException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Вывод (когда закомментирована переменная «процент», так как она выдаст исключение, если не из-за значения длины 0 ()):
free space : 10354356224
total space : 0
filesystemUsedSpace 1011870294016
smb.getDiskFreeSpace() 1011870294016
smb.getContentLength() 0
smb.getContentLengthLong() -1
smb.getType() 1