Neste post vou compartilhar com vocês um suporte que me é muito útil nos projetos que ando desenvolvendo, onde necessito abrir algum arquivo local da máquina do usuário da aplicação e posteriormente caso necessário salvar um arquivo…
Como comentado, em um projeto tive a necessidade de trabalhar com arquivos locais do usuário em uma aplicação Adobe Flex 3.5, para isto fiz uso da classe FileReference [métodos load e save] com a versão do Adobe Flash Player 10+, onde também foi incluso o suporte para exibir o progresso da leitura e escrita dos arquivos no computador local, conforme a imagem acima.
Segue o código da aplicação de teste vista na imagem:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | <?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300" creationComplete="init()" horizontalAlign="center"> <mx:Script> <![CDATA[ import com.erkobridee.flex.util.file.LocalFileHelper; import mx.controls.Alert; import com.erkobridee.flex.util.file.enum.*; import com.erkobridee.flex.util.file.events.*; //------------------------------------------------------------------ private var localFileHelper:LocalFileHelper; //------------------------------------------------------------------ private function init():void { localFileHelper = new LocalFileHelper( FileTypeFormat.FILE_FILTER_TEXT_TYPE ); localFileHelper.addEventListener(LocalFileEvent.FILE_LOAD_BROWSE, onFileSelect); localFileHelper.addEventListener(LocalFileEvent.FILE_SAVE_BROWSE, function():void { trace("Save browse complete"); } ); localFileHelper.addEventListener(LocalFileEvent.FILE_SAVE_SUCCESSFULLY, function():void { trace("Save complete!"); } ); localFileHelper.addEventListener(LocalFileEvent.FILE_CANCEL, function():void { Alert.show("Cancel"); } ); localFileHelper.addEventListener(LocalFileErrorEvent.FILE_ERROR, function():void { trace("file error") } ); localFileHelper.addEventListener(LocalFileLoadProgressEvent.FILE_LOAD_PROGRESS, onLoadProgress); localFileHelper.addEventListener(LocalFileSaveProgressEvent.FILE_SAVE_PROGRESS, onSaveProgress); } //------------------------------------------------------------------ private function loadFile():void { this.reset(); localFileHelper.browse(); } //------- SAVE private function saveFile():void { localFileHelper.save( output.text, "output.txt" ); this.reset(); } private function reset():void { loadProgressBar.setProgress(0,0); saveProgressBar.setProgress(0,0); output.text = ""; System.gc(); } //------------------------------------------------------------------ // event handlers private function onFileSelect(event:LocalFileEvent):void { localFileHelper.addEventListener(LocalFileLoadedEvent.DATA_LOADED, onDataLoaded ); localFileHelper.load(); } private function onDataLoaded(event:LocalFileLoadedEvent):void { output.text = LocalFileHelper.convertByteArrayToText( event.byteLoaded ); } private function onLoadProgress(event:LocalFileLoadProgressEvent):void { loadProgressBar.setProgress(event.done, event.total); } private function onSaveProgress(event:LocalFileSaveProgressEvent):void { saveProgressBar.setProgress(event.done, event.total); } ]]> </mx:Script> <mx:TextArea id="output" width="100%" height="100%"/> <mx:HBox width="100%" horizontalAlign="center"> <mx:Button label="Load" click="loadFile()"/> <mx:Button label="Save" click="saveFile()"/> <mx:Button label="Reset" click="reset()"/> </mx:HBox> <mx:Form> <mx:FormItem label="File load"> <mx:ProgressBar id="loadProgressBar" mode="manual"/> </mx:FormItem> <mx:FormItem label="File save"> <mx:ProgressBar id="saveProgressBar" mode="manual"/> </mx:FormItem> </mx:Form> </mx:VBox> |
Caso queria o projeto [LocalFileHelper] obs.: em Adobe Flex Builder 3
Essa funcionalidade foi uma adaptação do código pacialmente disponível no post: utility class to help reading/writing files in flash 10 devido a não encontrar o código disponível para o download, tive a necessidade de vasculhar e remontar o projeto.








Pingback: [Adobe AIR 2 : NativeProcess + Java] SimpleAirJava - redeRIA | Agregador de noticias, artigos, tutoriais Flex, Flash, JavaFX, AJAX e Rich internet applications em geral!
Pingback: [Adobe AIR 2 : NativeProcess] projeto de exemplo : Windows Console - redeRIA | Agregador de noticias, artigos, tutoriais Flex, Flash, JavaFX, AJAX e Rich internet applications em geral!
Pingback: Adobe AIR – FileSearch - redeRIA | Agregador de noticias, artigos, tutoriais Flex, Flash, JavaFX, AJAX e Rich internet applications em geral!
Pingback: [ Adobe AIR ] Local File Explorer - redeRIA | Agregador de noticias, artigos, tutoriais Flex, Flash, JavaFX, AJAX e Rich internet applications em geral!