« Write your first file to the file system using Apollo | Main | Create your first Apollo Window »
File and FileStream within Apollo - full source code
By Rich Tretola | March 19, 2007
Print This Post
Print This Post2,227 views

Local access to the file system is what separates Apollo from Flex/Flash. This simple sample demonstrates how to read and write files to the local file system.
Here is the function that loads a file:
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
private function loadFile():void{
var file:File = File.appStorageDirectory;
file = file.resolve("Files/" + fdg.selectedItem.name);
stream = new FileStream();
stream.open(file, FileMode.READ);
var str:String = stream.readUTFBytes(stream.bytesAvailable);
stream.close();
str = str.replace(File.lineEnding, "\n");
contents.text = str;
fileName.text = file.name;
}
var file:File = File.appStorageDirectory;
file = file.resolve("Files/" + fdg.selectedItem.name);
stream = new FileStream();
stream.open(file, FileMode.READ);
var str:String = stream.readUTFBytes(stream.bytesAvailable);
stream.close();
str = str.replace(File.lineEnding, "\n");
contents.text = str;
fileName.text = file.name;
}
Here is the function that saves the file:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private function saveFile():void{
var myPattern:RegExp = / /g;
var newFileName:String = fileName.text.replace('.txt','');
if(newFileName.length > 1){
var file:File = File.appStorageDirectory.resolve("Files/" + newFileName.replace(myPattern,'_') + ".txt");
var stream:FileStream = new FileStream()
stream.open(file, FileMode.WRITE);
var str:String = contents.text;
str = str.replace(/\r/g, File.lineEnding);
stream.writeUTFBytes(str);
stream.close();
fdg.directory = File.appStorageDirectory.resolve("Files/");
fileName.text = "";
contents.text = "";
mx.controls.Alert.show("File has been saved", "Notice");
} else {
mx.controls.Alert.show("File name is required", "Error Saving File");
}
}
var myPattern:RegExp = / /g;
var newFileName:String = fileName.text.replace('.txt','');
if(newFileName.length > 1){
var file:File = File.appStorageDirectory.resolve("Files/" + newFileName.replace(myPattern,'_') + ".txt");
var stream:FileStream = new FileStream()
stream.open(file, FileMode.WRITE);
var str:String = contents.text;
str = str.replace(/\r/g, File.lineEnding);
stream.writeUTFBytes(str);
stream.close();
fdg.directory = File.appStorageDirectory.resolve("Files/");
fileName.text = "";
contents.text = "";
mx.controls.Alert.show("File has been saved", "Notice");
} else {
mx.controls.Alert.show("File name is required", "Error Saving File");
}
}
Note that although this application uses File.appStorageDirectory, you also have easy access within Apollo to:
File.appResourceDirectory
File.appStorageDirectory
File.currentDirectory
File.desktopDirectory
File.documentsDirectory
Share this Post
Topics: Adobe AIR, Tutorials |


![[image]](http://mowser.com/img?url=http%3A%2F%2Fassets.max.adobe.com%2Fimages%2FMAX09_D125x125.jpg)




March 26th, 2007 at 10:57 pm
what is the purpose of this line:
fdg.directory = File.appStorageDirectory.resolve(”Files/”)
in both functions?
March 27th, 2007 at 3:25 am
Well, it is the way to get the path to a file. The two functions are looking at the same folder but different files. The loadFile function gets a reference to the selected filename within the Files folder.
var file:File = File.appStorageDirectory;
file = file.resolve(â€Files/†+ fdg.selectedItem.name);
The saveFile function gets a refernce to the new filename within the Files folder.
var file:File = File.appStorageDirectory.resolve(â€Files/†+ newFileName.replace(myPattern,’_’) + “.txtâ€);
June 20th, 2007 at 6:16 pm
The code works but I had to change the
“appStorageDirectory” to:”applicationStorageDirectory”
As well as the WindowedApplication used by Flex3.
I’m getting an error when I load “Windows - No Disk” Exception Processing Message c00000013 Parameters 75b6bf9c 4 75b6…. [cancel] [Try Again] [Continue]. If you continue the program works. I commented out the init() function to see if that would help but I am still getting the error. I hope this helps.
June 20th, 2007 at 6:54 pm
This application was built for the Apollo alpha and does not play nicely with the AIR beta and many things have changed between builds.
November 23rd, 2007 at 1:23 pm
Was the No Disk error ever solved? I am getting the same thing in my registered copy of FlexBuilder 2.