Monday, February 02, 2009

AlphaFS – Some Max_Path, Transactional NTFS, hard links, and more .Net System.IO.File/Path/Directory Help (alpha)

CodePlex - AlphaFS - Bringing Advanced Windows Filesystem Support to .NET

“AlphaFS is a .NET library providing more complete Win32 file system functionality to the .NET platform than the standard System.IO classes. Features highlights: creating hardlinks, accessing hidden volumes, enumeration of volumes, transactional file operations and much more.

AlphaFS provides a namespace (Alphaleonis.Win32.Filesystem) containing a number of classes. Most notable are replications of the System.IO.File, System.IO.Directory and System.IO.Path, all with support for the extended-length paths discussed above. They also contain extensions to these, and there are more options for several functions.

Another thing AlphaFS brings to the table is support for transactional NTFS (TxF). Almost every method in these classes exist in two versions. One normal, and one that can work with transactions, more specifically the kernel transaction manager. This means that file operations can be performed using the simple, lightweight KTM on NTFS file systems, through .NET, using the interface of the standard classes we are all used to.

AlphaFS also contains a little security related functionality (in Alphaleonis.Win32.Security), providing the ability to enable token privileges for a user, which may be necessary for eg. changing ownership of a file.

This is an alpha release, and it is likely to contain bugs, and interfaces may change as the library evolves.

The library comes with full API documentation in CHM and Windows Help 2.x format.

The library is Open Source, licensed under the MIT license.

…”

While we wait on better File/Path/Directory IO from the BCL team (it’s time MAX_PATH be put to bed, isn’t it? The NTFS file system, since forever has supported 32K path lengths, it’s the OS “A” API’s that seems to be seems to be holding us back…), here’s an interesting project.

The project seems to be very active, with being code checked in yesterday, Sunday, and seem to be aggressively working on improving the it. The code, c# is well documented and there’s even a CHM…

The AlphaFS team is also actively looking to help/integrate into other projects, for example I just saw a request from them on the vXCopy project. If System.IO.File, System.IO.Directory or System.IO.Path just are not enough for you/your project, before you go writing your own pinvoke wrappers, you might want to check out this project.

 

Related Past Post XRef:
The Long Path for the BCL Team
Subsytem for Unix (SUA) Utilities and SDK For Windows 2008 and Vista SP1
The PInvoke tool you've been looking for all this time... the "PInvoke Interop Assistant"
Using GetFileAttributes to Test for File Existence
Unicode Path Fun...

1 comment:

Peter said...

Thank you for your nice review of AlphaFS. As one of the developers of this library it is always encouraging when people find what you're doing useful.

I would also like to take this opportunity to announce that version 1.0 Beta of AlphaFS was released today, and should provide many bug-fixes and improvements over earlier alpha versions.

Once again, thanks for noticing us! :)