0
votes

I have my Flash project properties set for: AIR 3.4 for Desktop and ActionScript 3.0...

I created a button for the user to select a file (csv) from the local drive. I then want to be able to get the string value of the File Object but do not know how...

Here is what I have so far:

BTN_CSV.addEventListener(MouseEvent.CLICK, getCSV);

var myFile:File = new File();

function getCSV(e:MouseEvent):void {
    var docFilter:FileFilter = new FileFilter("Documents", "*.csv");

    myFile.browse([docFilter]);
    myFile.addEventListener(Event.COMPLETE, completeHandler);
}


function completeHandler(event:Event) {
    var csvData = myFile.nativePath;
    csvData = csvData.data.split("\n");

    parseCSV(csvData);
}

I'm getting an error 1061: Call to a possibly undefined method split through a reference with static type flash.utils: ByteArray. I don't know how to get the file path for the file obj...

1

1 Answers

0
votes

The file class is basically just a pointer to the file you want.
Your code is almost there you just need to add in the FileStream class. Source

import flash.filesystem.*;
import flash.events.Event;

var file:File = File.documentsDirectory;
file = file.resolvePath("Apollo Test/test.txt");
var fileStream:FileStream = new FileStream();
fileStream.addEventListener(Event.COMPLETE, fileCompleteHandler)
fileStream.openAsync(file, FileMode.READ);

function fileCompleteHandler(event:Event):void {
    var str:String = fileStream.readMultiByte(fileStream.bytesAvailable, File.systemCharset);
    trace(str);
    fileStream.close();
}

[EDIT]

import flash.events.Event;
import flash.filesystem.File
import flash.filesystem.FileStream
import flash.filesystem.FileMode

var file:File =File.documentsDirectory;
file.addEventListener(Event.SELECT,onSelect)
file.browse()


function onSelect(event:Event):void{
    var fileStream:FileStream = new FileStream();
    fileStream.open(file, FileMode.READ);
    var str:String = fileStream.readMultiByte(file.size, File.systemCharset);
    trace(str);   
}