使用browseForSave方法时,是否可以让用户只选择文件的位置,而不是文件名或扩展名?
我正在创建一个加密文件,我需要其名称和扩展名不被用户更改。
THX!
我只是在寻找browseForDirectory方法。对我感到羞耻。 :)
答案 0 :(得分:1)
有关如何打开浏览对话框以选择文件夹的参考,请参阅此处的示例:
How to create "Browse for folder" dialog in 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");
}
}
答案 1 :(得分:0)
一种解决方案是像这样设置文件对象:
var f:File = File.desktopDirectory.resolvePath("*.txt");
f.addEventListener(Event.SELECT, onSelected);
f.browseForSave("save txt file");
尽管用户仍然可以在打开的对话框中覆盖它,但是至少该对话框显示文件扩展名。然后,在Event.SELECT
中,您可以检查并确认用户选择了什么。