使用 browseForSave 方法时,是否可以让用户只选择文件的位置,而不选择文件名或扩展名?
我正在创建一个加密文件,我需要用户不要更改它的名称和扩展名。
谢谢!
编辑(解决后)
我只是在寻找 browseForDirectory 方法。真丢人。:)
使用 browseForSave 方法时,是否可以让用户只选择文件的位置,而不选择文件名或扩展名?
我正在创建一个加密文件,我需要用户不要更改它的名称和扩展名。
谢谢!
编辑(解决后)
我只是在寻找 browseForDirectory 方法。真丢人。:)
有关如何打开浏览对话框以选择文件夹的参考,请参见此处的示例:
如何在 Adobe FLEX 中创建“浏览文件夹”对话框?
一旦你有了你的目录,你可以把它和这里的代码拼凑在一起,使用 FileStream 对象保存一个文件:
http://blog.everythingflex.com/2008/02/25/file-and-filestream-within-air/
复制到这里,因为它是一个外部链接
private function saveFile():void{
var myPattern:RegExp = / /g;
var newFileName:String = fileName.text.replace('.txt','');
if(newFileName.length > 1){
var file:File = File.desktopDirectory.resolvePath("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.desktopDirectory.resolvePath("Files/");
fileName.text = "";
contents.text = "";
} else {
mx.controls.Alert.show("File name is required", "Error Saving File");
}
}
One solution would be to set the file object like this:
var f:File = File.desktopDirectory.resolvePath("*.txt");
f.addEventListener(Event.SELECT, onSelected);
f.browseForSave("save txt file");
Although user can still override that in the opened dialog, but at least the dialog shows the file extension. And later in the Event.SELECT
you can check and confirm what user has selected.