views:

29

answers:

2

Hey guys, I'm trying to get the name of every files from a specific folder into an array, but I get this error and I can't find why... this may be a stupid question but whatever.

TypeError: Error #1009: Cannot access a property or method of a null object reference.

Here's my code:

import flash.filesystem.File;

function getFileList(directory:String):Array
{
var folder:File = new File(directory);
var files:Array = folder.getDirectoryListing();
var fileList:Array;

for(var i = 0; i < files.length -1; i++)
{
var path:String = files[i].nativePath;
var split:Array = path.split(File.separator);
fileList[i] = (split[split.length -1]);
}
return fileList;
}

var list:Array = getFileList("E://Whatever//Whatever");
A: 

I'd be willing to bet it's not finding the path you're entering, so you can't get a directory listing for it.

Try putting some traces in and see if that's where it gets stuck.

Rob Cooney
Thanks alot for your answer man, but that wasn't it. I just changed that line: var fileList:Array; for that line: var fileList:Array = new Array(); and it worked. But anyway thanks again man, your answer made me see where the problem was. :)
Simon
+2  A: 

You forgot to initialize the fileList array and hence it is null when you call fileList[i] = (split[split.length -1]); in the loop.

Change

var fileList:Array;

to

var fileList:Array = [];
Amarghosh
Valid remark also in terms of using literals for initialisation that are way faster than using a constructor, see http://tekkie.flashbit.net/flash/as/actionscript-3-array-constructor-vs-array-literals-benchmark for a benchmark.
Ain