# File System
DWScript provides simple functions for reading, writing, and managing files and directories.
## Reading & Writing
For most tasks, `FileRead` and `FileWrite` are the easiest way to handle file content as strings. If you need to process a file line by line, `FileReadLines` returns an array of strings.
```pascal
var content := 'Hello from DWScript';
FileWrite('test.txt', content);
var read := FileRead('test.txt');
PrintLn(read);
// Process line by line
var lines := FileReadLines('test.txt');
for var line in lines do
PrintLn('> ' + line);
DeleteFile('test.txt');
// OUTPUT
// Hello from DWScript
// > Hello from DWScript
```
## Directory Management
Listing files is done using `EnumerateDir`, which returns an array of strings.
```pascal
var files := EnumerateDir('lang/basics', 'intro*.md', False);
if files.Length > 0 then
PrintLn('Found documentation');
// OUTPUT
// Found documentation
```
## Path Manipulation
Functions like `ExtractFileName` and `ChangeFileExt` help you manage file paths without manually parsing strings.
```pascal
var path := 'C:\Data\User.json';
PrintLn(ExtractFileName(path)); // User.json
PrintLn(ExtractFilePath(path)); // C:\Data\
PrintLn(ChangeFileExt(path, '.bak')); // C:\Data\User.bak
// OUTPUT
// User.json
// C:\Data\
// C:\Data\User.bak
```
:::info
### Related Reference
For a complete list of all I/O functions and directory utilities, see the reference documentation:
* **[Files API Reference](/ref/files)** - Complete list of functions.
* **[IniFiles](/lang/stdlib/std_inifiles)** - Working with `.ini` configuration files.
* **[Encoding](/lang/stdlib/std_encoding)** - Reading/Writing text with specific encodings (UTF-8, etc).
:::
File System
DWScript provides simple functions for reading, writing, and managing files and directories.
Reading & Writing
For most tasks, FileRead and FileWrite are the easiest way to handle file content as strings. If you need to process a file line by line, FileReadLines returns an array of strings.
var content :='Hello from DWScript';
FileWrite('test.txt', content);varread:= FileRead('test.txt');
PrintLn(read);// Process line by linevar lines := FileReadLines('test.txt');forvar line in lines do
PrintLn('> '+ line);
DeleteFile('test.txt');
Result
Hello from DWScript
> Hello from DWScript
Directory Management
Listing files is done using EnumerateDir, which returns an array of strings.
var files := EnumerateDir('lang/basics','intro*.md',False);if files.Length >0then
PrintLn('Found documentation');
Result
Found documentation
Path Manipulation
Functions like ExtractFileName and ChangeFileExt help you manage file paths without manually parsing strings.
var path :='C:\Data\User.json';
PrintLn(ExtractFileName(path));// User.json
PrintLn(ExtractFilePath(path));// C:\Data\
PrintLn(ChangeFileExt(path,'.bak'));// C:\Data\User.bak
Result
User.json
C:\Data\
C:\Data\User.bak
Related Reference
For a complete list of all I/O functions and directory utilities, see the reference documentation: