<> = netDIO = == Overview == '''netDIO''' is a Dyalog namespace of methods for Disk And File Input/Output Utility Using .Net. One advantage of using netDIO is that in most cases the file handle is guaranteed to be closed, even if exceptions are raised. This is important in mission critical application or long running program that cannot reboot easily. Check the comments of each methods for more information. === Text File with UTF-8 Encoding === This is the preferred way to exchange files with people in other country since the local encoding on their computer may change. The text file will be one continuous vector of characters. {{{ text←UFileRead file_name ⍝ Reads The Contents of a Unicode Text File. text UFileWrite file_name ⍝ Creates a New File, Writes The Text Using The UTF-8 Encoding. text UFileAppend file_name ⍝ Appends The Specified Text to a File Using The UTF-8 Encoding. }}} === Text File with UTF-8 Encoding as Multiple Lines === This method opens a file, reads each line of the file, then adds each line as an element of a vector. It then closes the file. A line is defined as a sequence of characters followed by a carriage return ('\r'), a line feed ('\n'), or a carriage return immediately followed by a line feed. The lines Read/Written is a vector of individual character vector where each element is representing a line. {{{ lines←UFileReadAllLines file_name ⍝ Opens a text file, reads all lines of the file, and then closes the file. lines UFileWriteAllLines file_name ⍝ Creates a new file, writes the specified individual lines to the file. lines UFileAppendAllLines file_name ⍝ Appends lines to a file using UTF8 encoding, and then closes the file. ⍝ Simple CSV file of numbers can be imported using UFileReadAllLines and a DFN function: lines ← 2⊃UFileReadAllLines file_name csv ← ⊃','{2⊃⍺⎕VFI('-'⎕R'¯')⍵}¨lines ⍝ The delimiter is ',' (left argument of the DFN) ⍝ If there is no negative value ('-'⎕R'¯') can be removed ⍝ csv is a matrix of numbers. Invalid numbers are replaced with 0 }}} === Text File with Default Windows Code Page === {{{ text←TFileRead file_name ⍝ Reads The Contents of a Text File Using the Default Windows Code Page. text TFileWrite file_name ⍝ Creates a New File, Writes The Text Using The Default Windows Code Page. text TFileAppend file_name ⍝ Appends The Specified Text to a File Using The Default Windows Code Page. }}} === Binary File === {{{ data←BFileRead file_name ⍝ Reads The Contents of a Binary File Into a Character Vector Without Encoding. data BFileWrite file_name ⍝ Creates a New File, Write The Specified Character Vector to The File Without Encoding. }}} === Directory === {{{ DirCopy (source_path target_path) ⍝ Copies a Directory And Its Contents. SubDirectories Are Not Copied. DirCreate path ⍝ Creates All Directories And Subdirectories as Specified By Path. DirDelete path ⍝ Deletes The Specified Directory And Any Subdirectories in The Directory. DirExists path ⍝ Determines Whether The Given Path Refers to an Existing Directory on Disk. DirMove (source_path target_path) ⍝ Moves a Directory And Its Contents. SubDirectories Are Moved. DirRename (actual_path new_path) ⍝ Renames a Directory (This Method is Identical to DirMove). DirSize path ⍝ Returns The Size in Bytes of a Directory And It's Subdirectories. GetDirCurrent ⍝ Returns The Current Directory Path. GetDirectories path ⍝ Returns The SubDirectories of a Directory. GetDrives ⍝ Returns The Names of The Logical Drives on This Computer as ":\". GetExtension file_name ⍝ Returns The Extension of a Path String. GetFiles path ⍝ Returns The Names of Files in a Directory. SetDirCurrent path ⍝ Sets The Current Directory Path. }}} === File Manipulation and Info === {{{ FileCopy (source_FileName target_FileName) ⍝ Copies an Existing File to a New File. FileDelete file_name ⍝ Deletes a File. FileExists file_name ⍝ Verify if One or Many File(s) Exists. FileMove (source_FileName target_FileName) ⍝ Moves a File to a New Location. FileRename (old_FileName new_FileName) ⍝ Renames a File (This Method is Identical to FileMove). FileSize file_name ⍝ Returns The Size of a File in Bytes. FileVersion file_name ⍝ Returns The File Version of a File in Characters. GetAttributes file_name ⍝ Returns The Attributes of a File in Numeric And Litteral Form. new_attributes SetAttributes file_name ⍝ Sets The Attributes of a File. GetCreationTime file_name ⍝ Returns The Creation Date And Time of a File as DateTime Object. }}} === File and Folder Dialogs === {{{ DialogFolder ⍝ Selects a Directory with FolderBrowserDialog. DialogOpenFile ⍝ Selects a File to Open With OpenFileDialog. DialogSaveFile ⍝ Selects a File to Save With SaveFileDialog. }}} See also [[wpfOokiiDialogBox]] and [[wpfDialogBox]] on the subject of Dialog Boxes. === Varia === {{{ EncodingDetector file_name ⍝ Returns The Encoding of a File And it's Content. {nsOrKey} NS2File file_name ⍝ Function to save and retrieve a Namespace (NS) under a format compatible with C#. ZipCompressFile file_name ⍝ Compress a file using Syncfusion Zip namespace. GetTempFileName ⍝ Returns a Uniquely Named Temporary File on Disk With Full Path. GetTempPath ⍝ Returns The Path of The Current System's Temporary Folder. }}} See also [[Utf8orNot]] and [[UnicodeForAplers]] on the subject of Unicode. == How to install netDIO in your workspace == 1. Download [[attachment:netDIO.v1.2.txt]] 1. Do a Select all (Ctrl+A) and a copy (Ctrl+C). 1. In your workspace execute `)ed ⍟ netDIO` 1. Paste (Ctrl+V) the text into the Dyalog editor 1. Press Escape and ')save' your workspace Optionally to de-script the namespace you can do: {{{ 'netDIO' ⎕SE.SALTUtils.CopyNs netDIO }}} == Version Information == {{{ Version 1.0 February 2015, Pierre Gilbert Version 1.1 August 2015 Method Added: UFileAppendAllLines Version 1.2 March 2016 Method Corrected for bug: FileSize }}} ||Original author: ||Pierre Gilbert || ||Responsible: ||PierreGilbert || ||Email: || <> || ---- CategoryDyalog - CategoryDyalogDotNet - CategoryDyalogDotNetUtilities - CategoryDotNet