# FileOpen

Opens a file for reading or writing and returns a file object for future operations

## Method Signature

```
FileOpen(file=[string], mode=[string], charset=[string], seekable=[boolean])
```

### Arguments

| Argument   | Type      | Required | Description                                                                     | Default |
| ---------- | --------- | -------- | ------------------------------------------------------------------------------- | ------- |
| `file`     | `string`  | `true`   | The file to open.                                                               |         |
| `mode`     | `string`  | `false`  | The mode to open the file in. Defaults to "read".                               | `read`  |
| `charset`  | `string`  | `false`  | The character set to use when reading or writing the file. Defaults to "utf-8". | `utf-8` |
| `seekable` | `boolean` | `false`  | Whether the file should be opened as seekable. Defaults to false.               |         |

## Examples

### Opens a file, reads a line then closes it.

```java
// Open File
var fileObject = fileOpen( "/path/to/file.txt" );
// Perform Actions
try {
	// Read Line
	writeOutput( fileReadLine( fileObject ) );
}
// Error Handling
 catch (any ex) {
	// Report Exception
	writeDump( ex );
}finally {
	// Always Close
	// Close File
	fileClose( fileObject );
}

```

### Additional Examples

```java
myFile = fileOpen( "filepath/filename.ext" );
writeDump( myfile );

```

```java
// how to access the underlying resource provider info
f = "ram://demo.txt";
fileWrite( f, "demo" );
dump( f.getResource().getResourceProvider().getScheme() );
 // ram ( i.e. the resource provider type)

```

## Related

* [ContractPath](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/contractpath)
* [CreateTempDirectory](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/createtempdirectory)
* [CreateTempFile](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/createtempfile)
* [DirectoryCopy](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/directorycopy)
* [DirectoryCreate](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/directorycreate)
* [DirectoryDelete](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/directorydelete)
* [DirectoryExists](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/directoryexists)
* [DirectoryList](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/directorylist)
* [DirectoryMove](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/directorymove)
* [DirectoryRename](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/directoryrename)
* [ExpandPath](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/expandpath)
* [FileAppend](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/fileappend)
* [FileClose](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/fileclose)
* [FileCopy](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filecopy)
* [FileDelete](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filedelete)
* [FileExists](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/fileexists)
* [FileGetMimeType](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filegetmimetype)
* [FileInfo](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/fileinfo)
* [FileIsEOF](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/fileiseof)
* [FileMove](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filemove)
* [FileRead](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/fileread)
* [FileReadBinary](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filereadbinary)
* [FileReadLine](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filereadline)
* [FileSeek](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/fileseek)
* [FileSetAccessMode](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filesetaccessmode)
* [FileSetAttribute](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filesetattribute)
* [FileSetLastModified](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filesetlastmodified)
* [FileSkipBytes](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/fileskipbytes)
* [FileWrite](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filewrite)
* [FileWriteLine](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/filewriteline)
* [GetCanonicalPath](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/getcanonicalpath)
* [GetDirectoryFromPath](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/getdirectoryfrompath)
* [GetFileInfo](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/getfileinfo)
* [getTempFile](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/gettempfile)
* [PropertyFile](https://boxlang.ortusbooks.com/boxlang-language/reference/built-in-functions/io/propertyfile)
