Append text from one file to an other

October 31, 2009 at 08:28
filed under Dynamics AX
Tagged , ,

This method will append all text from the original file to the destination file.
While this is a very easy task, the method shows many of the things you come across when you are working with files in AX, like:

– Using the #File macro
– Asserting FileIOPermission to be able to access files
– Asserting InteropPermission to be able to use .NET Interop
– Using a set to assert multiple permissions at once
– Using .NET Clr Interop in AX (better than winapi and winapiserver)
– Optional cleaning up after you’re done using reverAssert()

void AppendFileToFile(FileName original, FileName distination)
{
    #File
    FileIOPermission    FileIOPermissionA   = new FileIOPermission(distination, #io_append);
    FileIOPermission    FileIOPermissionR   = new FileIOPermission(original, #io_read);
    InteropPermission   InteropPermission   = new InteropPermission(InteropKind::ClrInterop);
    Set                 permissionset       = new set(types::Class);
    ;

    // create permissionset
    permissionset.add(FileIOPermissionA);
    permissionset.add(FileIOPermissionR);
    permissionset.add(InteropPermission);
    // assert permissions
    CodeAccessPermission::assertMultiple(permissionset);
    // append text from source file to destination file
    System.IO.File::AppendAllText(distination, System.IO.File::ReadAllText(original));

    // limit the scope of the assert
    CodeAccessPermission::revertAssert();
}

Because all permissions are taken care of, this code will run client side as well as server side.

3 comments

RSS / trackback

  1. Steffen

    Hi
    Just found your page – really nice. You’ve got many really nice posts especially this one :-D

    /Happy ax-hacking

  2. USER

    what is file name here?

  3. Klaas Deforche

    Use the full path of the file, eg “C:\temp\myfile.txt”. Make sure you escape it like this: @”C:\temp\myfile.txt” or like this: “C:\\temp\\myfile.txt”.

respond