文件类AS3 / AIR:让用户只选择保存位置,而不是文件名或扩展名

时间:2012-09-01 18:16:00

标签: actionscript-3 flash air

使用browseForSave方法时,是否可以让用户只选择文件的位置,而不是文件名或扩展名?

我正在创建一个加密文件,我需要其名称和扩展名不被用户更改。

THX!


编辑(解决后)

我只是在寻找browseForDirectory方法。对我感到羞耻。 :)

2 个答案:

答案 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中,您可以检查并确认用户选择了什么。