[Mono-dev] Help needed with UnixDriveInfo
Jonathan Pryor
jonpryor at vt.edu
Wed May 24 07:36:47 EDT 2006
On Wed, 2006-05-24 at 10:56 +0200, Arnhoffer Károly wrote:
> I would like to try UnixDriveInfo but I can not know how to start. As
> I can see to construct a UnixDriveInfo object I have to give a mount
> point. How can I get the mount point part of a path?
In general, you don't, since a mount point can be anywhere...
> For example I have a different partition (and different mount points)
> for / and an other for /home but my application may not know anything
> about it. My application gets the path /home/pulcsi/Documents and it
> has to deceide what the mount point here is to give it to
> UnixDriveInfo constructor. How should it do it?
Use UnixDriveInfo.GetDrives() to get all known mount points, then use
UnixDriveInfo.Name to determine which drive best corresponds to your
path:
using System;
using Mono.Unix;
class Test {
public static void Main (string[] paths)
{
UnixDriveInfo[] drives = UnixDriveInfo.GetDrives ();
foreach (string path in paths) {
int idx = -1, count = -1;
for (int i = 0; i < drives.Length; ++i) {
if (path.StartsWith (drives [i].Name) &&
drives [i].Name.Length > count) {
count = drives [i].Name.Length;
idx = i;
}
}
Console.WriteLine ("Drive for `{0}' is {1} (device {2})",
path, drives [idx].Name, drives [idx].VolumeLabel);
}
}
}
- Jon
More information about the Mono-devel-list
mailing list