flash.filesystemFileStream Объект FileStream используется для чтения и записи файлов.flash.utils:IDataInputflash.utils:IDataOutputflash.events:EventDispatcher Объект FileStream используется для чтения и записи файлов. Файлы можно открывать в синхронном режиме с помощью метода open() или в асинхронном с помощью метода openAsync().

Преимущество открытия файлов в асинхронном режиме состоит в том, что пока Adobe AIR выполняет чтение и запись в фоновом режиме, может исполняться и другой код. При открытии в асинхронном режиме события progress вызываются по мере выполнения операций.

Поведение объекта File, открываемого в асинхронном режиме, похоже на поведение объекта ByteArray, а поведение файла, открываемого в асинхронном режиме, похоже на поведение объекта Socket или URLStream. Когда объект File открывается в синхронном режиме, вызывающий оператор приостанавливает работу, пока запрошенные данные считываются или записываются в файл. Когда же он открывается в асинхронном режиме, все записываемые данные немедленно помещаются в буфер и записываются в файл позднее.

Независимо от того, в синхронном или асинхронном режиме выполняется чтение, в действительности методы чтения являются синхронными. В обоих случаях считывание производится из данных, которые «доступны» в текущий момент времени. Разница в том, что при синхронном чтении все данные доступны постоянно, а при асинхронном данные становятся доступны по мере того, как они передаются в буфер считывания. В любом случае, данные, которые в настоящий момент можно считать синхронным способом, представлены свойством bytesAvailable.

Приложение, обрабатывающее вводимые данные в асинхронном режиме, обычно ожидает событий progress и использует данные по мере того, как они становятся доступны, через вызов методов чтения. С другой стороны, приложение может просто дождаться, когда станут доступны все данные (событие complete), и как только событие complete будет выполнено, обработать все данные сразу.

complete Сообщает о достижении конца потока.flash.events.Event.COMPLETEflash.events.Event Сообщает о достижении конца потока. positionoutputProgress Сообщает, что запись данных из буфера в файл завершена.flash.events.OutputProgressEvent.OUTPUT_PROGRESSflash.events.OutputProgressEvent Сообщает, что запись данных из буфера в файл завершена. progress Сообщает, что в потоке появились новые доступные данные.flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent Сообщает, что в потоке появились новые доступные данные. ioError Указывает, что во время выполнения асинхронной операции ввода-вывода произошла ошибка.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Указывает, что во время выполнения асинхронной операции ввода-вывода произошла ошибка. close Указывает, что поток был закрыт формальным вызовом метода close().flash.events.Event.CLOSEflash.events.Event Указывает, что поток был закрыт формальным вызовом метода close(). close()FileStream Создает объект FileStream. Создает объект FileStream. Для открытия файла используйте методы open() или openAsync(). open()openAsync()close Закрывает объект FileStream. Закрывает объект FileStream.

После вызова метода close() данные невозможно считывать или записывать. Если файл был открыт в асинхронном режиме (объект FileStream использует для открытия файла метод openAsync()), вызов метода close() заставляет объект вызвать событие close.

Автоматическое закрытие приложения закрывает все файлы, связанные с объектами FileStream в приложении. Тем не менее, рекомендуется ставить все асинхронно открытые объекты FileStream, у которых есть данные, ожидающие записи, в очередь на событие closed, прежде чем закрывать приложение (чтобы данные точно были записаны).

Можно повторно использовать объект FileStream, вызвав метод open() или openAsync(). Все файлы, связанные с объектом FileStream, при этом закрываются, но объект не вызывает событие close.

Что касается объекта FileStream, открытого в асинхронном режиме (с использованием метода openAsync()), то даже если вызвать событие close() для этого объекта и удалить свойства и переменные, ссылающиеся на него, объект FileStream не будет удален из памяти до тех пор, пока в остаются невыполненные операции и обработчики событий, ждущие их выполнения. В частности, объект FileStream, на который нет других ссылок, будет существовать, пока выполняется хотя бы одно из следующих условий:

  • При выполнении считывания из файла не был достигнут конец файла (и не было вызвано событие complete).
  • Выходные данные будут по-прежнему доступны для записи, а у связанных с ними событий (таких как outputProgress или ioError) будут прослушиватели событий.
Следующий код открывает объект FileStream асинхронно и записывает текстовый файл с именем test.txt во вложенный каталог Apollo Test каталога документов пользователя. Вызов метода close() объекта FileStream закрывает файл после записи данных. 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.openAsync(file, FileMode.WRITE); fileStream.writeUTFBytes("Hello"); fileStream.addEventListener(Event.CLOSE, fileClosed); fileStream.close(); function fileClosed(event:Event):void { trace("closed"); } Следующий код открывает объект FileStream синхронно и записывает текстовый файл с именем test.txt во вложенный каталог Apollo Test каталога документов пользователя. Вызов метода close() объекта FileStream закрывает файл после записи данных. import flash.filesystem.*; var file:File = File.documentsDirectory; file = file.resolvePath("Apollo Test/test.txt"); var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.WRITE); fileStream.writeUTF("Hello"); fileStream.close();
open()Событие closecloseflash.events:EventОткрытый в асинхронном режиме файл будет закрыт. Открытый в асинхронном режиме файл будет закрыт.
openAsync Открывает объект FileStream в синхронном режиме, указывая на файл, заданный параметром file.Файл находится в каталоге приложения, и для параметра fileMode задан режим append, update или write. SecurityErrorSecurityErrorfileflash.filesystem:FileОбъект File, указывающий на файл, который необходимо открыть. fileModeStringСтрока класса FileMode, определяющая доступные действия объекта FileStream, например чтение или запись в файл. Открывает объект FileStream в синхронном режиме, указывая на файл, заданный параметром file.

Если объект FileStream уже открыт, вызов метода закрывает файл перед открытием, и последующие события (включая close) не передаются ранее открытому файлу.

Если параметру fileMode присвоена константа FileMode.READ или FileMode.UPDATE, AIR считывает данные во входной буфер при открытии файла, а события progress и open отправляются по мере считывания данных во входной буфер.

В системах, поддерживающих блокирование файлов, файлы, открытые только для записи или только для обновления (FileMode.WRITE или FileMode.UPDATE), недоступны для чтения, пока они не будут закрыты.

После завершения выполнения операций с файлом необходимо вызвать метод close() объекта FileStream. В некоторых системах число одновременно открытых файлов ограничено.

`
Следующий код показывает, как синхронно открыть файл test.txt во вложенном каталоге Apollo Test каталога документов пользователя, а затем считать этот файл в строку, используя для кодировки текста системный набор символов. 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(); }
close()Событие completeСобытие ioErrorСобытие progressFileModeioErrorflash.events:IOErrorEventФайла не существует; у вас нет прав для открытия файла; вы открываете файл для чтения, но у вас нет прав на чтение; вы открываете файл для записи, но у вас нет прав для записи. Файла не существует; у вас нет прав для открытия файла; вы открываете файл для чтения, но у вас нет прав на чтение; вы открываете файл для записи, но у вас нет прав для записи.progressflash.events:ProgressEventВызывается при считывании данных во входной буфер. (При открытии файла для параметра fileMode должно быть установлено значение FileMode.READ или FileMode.UPDATE.) Вызывается при считывании данных во входной буфер.completeflash.events:EventДанные файла считаны во входной буфер. (При открытии файла для параметра fileMode должно быть установлено значение FileMode.READ или FileMode.UPDATE.) Данные файла считаны во входной буфер.
open Открывает объект FileStream в синхронном режиме, указывая на файл, заданный параметром file.Файла не существует; у вас нет прав для открытия файла; вы открываете файл для чтения, но у вас нет прав на чтение; вы открываете файл для записи, но у вас нет прав для записи. IOErrorflash.errors:IOErrorФайл находится в каталоге приложения, и для параметра fileMode задан режим append, update или write. SecurityErrorSecurityErrorfileflash.filesystem:FileОбъект File, указывающий на файл, который необходимо открыть. fileModeStringСтрока класса FileMode, определяющая доступные действия объекта FileStream, например чтение или запись в файл. Открывает объект FileStream в синхронном режиме, указывая на файл, заданный параметром file.

Если объект FileStream уже открыт, вызов метода закрывает файл перед открытием, и последующие события (включая close) не передаются ранее открытому файлу.

В системах, поддерживающих блокирование файлов, файлы, открытые только для записи или только для обновления (FileMode.WRITE или FileMode.UPDATE), недоступны для чтения, пока они не будут закрыты.

После завершения выполнения операций с файлом необходимо вызвать метод close() объекта FileStream. В некоторых системах число одновременно открытых файлов ограничено.

Следующий код показывает, как синхронно открыть файл test.txt во вложенном каталоге Apollo Test каталога документов пользователя, а затем считать этот файл в строку, используя для кодировки текста системный набор символов. import flash.filesystem.*; var file:File = File.documentsDirectory; file = file.resolvePath("Apollo Test/test.txt"); var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.READ); var str:String = fileStream.readMultiByte(file.size, File.systemCharset); trace(str); fileStream.close();
close()ФайлFileMode
readBoolean Считывает логическое значение из потока файлов, байтов или массива байтов.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorЛогическое значение будет true, если количество байтов не равно нулю, в остальных случаях оно будет false. Boolean Считывает логическое значение из потока файлов, байтов или массива байтов. Считывается один байт. Если этот байт ненулевой, то возвращается значение true. В противном случае возвращается значение false. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readByte Считывает байт со знаком из потока файлов, байтов или массива байтов.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorВозвращенное значение находится в диапазоне от -128 до 127. int Считывает байт со знаком из потока файлов, байтов или массива байтов. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readBytes Считывает число байтов данных, заданное параметром length, из потока файлов, байтов или массива байтов.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorbytesflash.utils:ByteArrayОбъект ByteArray, в который считываются данные. offsetuint0Смещение в параметре bytes, с которого должно начинаться считывание данных. lengthuint0Число байтов для считывания. Если значение по умолчанию равно 0, считываются все доступные данные. Считывает число байтов данных, заданное параметром length, из потока файлов, байтов или массива байтов. Байты считываются в объект ByteArray, определяемый параметром bytes, при этом начальная позиция определяется параметром offset. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readDouble Считывает из потока файлов, байтов или массива байтов число IEEE 754 с двойной точностью и плавающей запятой.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorЧисло IEEE 754 с двойной точностью и плавающей запятой. Number Считывает из потока файлов, байтов или массива байтов число IEEE 754 с двойной точностью и плавающей запятой. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readFloat Считывает из потока файлов, байтов или массива байтов число IEEE 754 с одинарной точностью и плавающей запятой.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorЧисло IEEE 754 с одинарной точностью и плавающей запятой. Number Считывает из потока файлов, байтов или массива байтов число IEEE 754 с одинарной точностью и плавающей запятой. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readInt Считывает из потока файлов, байтов или массива байтов 32-разрядное целое число со знаком.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorВозвращаемое значение находится в диапазоне от -2147483648 до 2147483647. int Считывает из потока файлов, байтов или массива байтов 32-разрядное целое число со знаком. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readMultiByte Считывает из потока файлов, байтов или массива байтов многобайтовую строку заданной длины с использованием указанного набора символов.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorСтрока в кодировке UTF-8. StringlengthuintЧисло считываемых из потока байтов. charSetStringСтрока, обозначающая набор символов, которые используются для интерпретации байтов. Возможные строки наборов символов: "shift_jis", "cn-gb", "iso-8859-1" и другие. Полный список см. в разделе Поддерживаемые наборы символов.

Примечание. Если в текущей системе не распознается значение параметра charSet, то в качестве набора символов Adobe® Flash® Player или Adobe® AIR® будет использована кодовая страница по умолчанию. Например, значение параметра charSet, как в myTest.readMultiByte(22, iso-8859-01), использующее 01 вместо 1, может работать в системе разработчика, а в другой системе нет. В другой системе программа Flash Player или среда выполнения AIR будет использовать кодовую страницу, заданную по умолчанию в системе.

Считывает из потока файлов, байтов или массива байтов многобайтовую строку заданной длины с использованием указанного набора символов.
File.systemCharsetioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.
readObject Считывает объект из потока файлов, байтов или массива байтов зашифрованный в сериализованном формате AMF.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorДесериализованный объект Считывает объект из потока файлов, байтов или массива байтов зашифрованный в сериализованном формате AMF. flash.net.registerClassAlias()ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readShort Считывает из потока файлов, байтов или массива байтов 16-разрядное целое число со знаком.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorВозвращаемое значение находится в диапазоне от -32768 до 32767. int Считывает из потока файлов, байтов или массива байтов 16-разрядное целое число со знаком. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readUTFBytes Считывает последовательность байтов UTF-8 из потока байтов или массива байтов и возвращает строку.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorСтрока в кодировке UTF-8, являющаяся байтовым представлением символов указанной длины. StringlengthuintЧисло байтов для считывания. Считывает последовательность байтов UTF-8 из потока байтов или массива байтов и возвращает строку. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readUTF Считывает из потока файлов, байтов или массива байтов строку UTF-8.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorСтрока в кодировке UTF-8, являющаяся байтовым представлением символов. String Считывает из потока файлов, байтов или массива байтов строку UTF-8. Предполагается, что в строку вставляется префикс с неподписанным значением, указывающим длину в байтах.

Этот метод похож на метод readUTF() в интерфейсе Java® IDataInput.

ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.
readUnsignedByte Считывает байт без знака из потока файлов, байтов или массива байтов.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorВозвращенное значение находится в диапазоне от 0 до 255. uint Считывает байт без знака из потока файлов, байтов или массива байтов. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readUnsignedInt Считывает из потока файлов, байтов или массива байтов 32-разрядное целое число без знака.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorВозвращенное значение находится в диапазоне от 0 до 4294967295. uint Считывает из потока файлов, байтов или массива байтов 32-разрядное целое число без знака. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.readUnsignedShort Считывает из потока файлов, байтов или массива байтов 16-разрядное целое число без знака.Файл не был открыт; файл был открыт, но без прав на чтение; либо, если файл был открыт для синхронных операций (с помощью метода open()), файл не может быть считан (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorПоложение, определенное для считывания данных, превышает количество доступных байтов (задается свойством bytesAvailable). EOFErrorflash.errors:EOFErrorВозвращенное значение находится в диапазоне от 0 до 65535. uint Считывает из потока файлов, байтов или массива байтов 16-разрядное целое число без знака. ioErrorflash.events:IOErrorEventЧтение файла невозможно или файл не открыт. Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Чтение файла невозможно или файл не открыт.truncate Сокращает файл до положения, заданного свойством position объекта FileStream.Файл не открыт для записи. IllegalOperationErrorflash.errors:IllegalOperationError Сокращает файл до положения, заданного свойством position объекта FileStream.

Все байты от положения, заданного свойством position, до конца файла, удаляются. Файл должен быть открыт для записи.

Следующий код синхронно открывает файл test.txt во вложенном каталоге Apollo Test каталога документов пользователя, а затем обрезает этот файл до 100 символов, если его длина превышает 100 символов. import flash.filesystem.*; var file:File = File.documentsDirectory; file = file.resolvePath("Apollo Test/test.txt"); var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.UPDATE); if (file.size > 100) { fileStream.position = 100; fileStream.truncate(); } fileStream.close(); Следующий код асинхронно открывает файл test.txt во вложенном каталоге Apollo Test каталога документов пользователя, а затем обрезает этот файл до 100 символов, если его длина превышает 100 символов. var file:File = File.documentsDirectory; file = file.resolvePath("Apollo Test/test.txt"); var fileStream:FileStream = new FileStream(); fileStream.openAsync(file, FileMode.UPDATE); trace("start", file.size) if (file.size > 100) { fileStream.position = 100; fileStream.truncate(); } fileStream.addEventListener(Event.CLOSE, fileClosed); fileStream.close(); function fileClosed(event:Event):void { trace("closed", file.size); }
position
writeBoolean Записывает логическое значение.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueBooleanЛогическое значение, показывающее, какой байт записывается. Если параметр имеет значение true, записывается 1; если false, записывается 0. Записывает логическое значение. Записывается один байт, соответствующий параметру value, 1 в случае значения true и 0 в случае значения false. ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeByte Записывает байт.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueintЗначение байта в виде целого числа. Записывает байт. Используются 8 младших битов параметра, а 24 старших битов игнорируются. ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeBytes Записывает последовательность байтов из заданного массива байтов, начиная с байта, заданного параметром offset (используя индекс с нулевой базой), длиной, заданной параметром length, в поток файлов, байтов или массив байтов.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorbytesflash.utils:ByteArrayМассив байтов для записи. offsetuint0Индекс с нулевой базой, определяющий положение в массиве для начала записи. lengthuint0Целое число без знака, определяющее глубину буфера для записи. Записывает последовательность байтов из заданного массива байтов bytes, начиная с байта, заданного параметром offset (используя индекс с нулевой базой), длиной, заданной параметром length, в поток файлов, байтов или массив байтов.

Если параметр length опущен, применение длины по умолчанию, равной 0, приведет к тому, что будет записан весь буфер, начиная со значения параметра offset. Если также опустить параметр offset, будет записываться весь буфер.

Если параметры offset или length находятся за пределами диапазона, то они корректируются так, чтобы совпасть с началом и концом массива bytes.

ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).
writeDouble Записывает число IEEE 754 с двойной точностью (64-разрядное) и плавающей запятой.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueNumberЧисло с двойной точностью (64-разрядное) и плавающей запятой. Записывает число IEEE 754 с двойной точностью (64-разрядное) и плавающей запятой. ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeFloat Записывает число IEEE 754 с одинарной точностью (32-разрядное) и плавающей запятой.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueNumberЧисло с одинарной точностью (32-разрядное) и плавающей запятой. Записывает число IEEE 754 с одинарной точностью (32-разрядное) и плавающей запятой. ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeInt Записывает 32-разрядное целое число со знаком.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueintЗначение байта в виде целого числа со знаком. Записывает 32-разрядное целое число со знаком. ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeMultiByte Записывает в поток файлов, байтов или массив байтов многобайтовую строку заданной длины с использованием заданного набора символов.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueStringЗаписываемое значение строки. charSetStringСтрока, определяющая используемый набор символов. Возможные строки наборов символов: "shift_jis", "cn-gb", "iso-8859-1" и другие. Полный список см. в разделе Поддерживаемые наборы символов. Записывает в поток файлов, байтов или массив байтов многобайтовую строку заданной длины с использованием заданного набора символов. File.systemCharsetioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeObject Записывает объект в поток файлов, байтов или массив байтов в сериализованном формате AMF.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorobjectОбъект для сериализации. Записывает объект в поток файлов, байтов или массив байтов в сериализованном формате AMF. flash.net.registerClassAlias()ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeShort Записывает 16-разрядное целое число.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueintЗначение байта в виде целого числа. Записывает 16-разрядное целое число. Используются 16 младших битов параметра, а 16 старших битов игнорируются. ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeUTFBytes Записывает строку UTF-8.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueStringЗаписываемое значение строки. Записывает строку UTF-8. Аналогично writeUTF(), но строке не предшествует 16-разрядное слово, указывающее длину. ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeUTF Записывает в поток файлов, байтов или массив байтов строку UTF-8.Если длина строки превышает 65535. RangeErrorRangeErrorФайл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueStringЗаписываемое значение строки. Записывает в поток файлов, байтов или массив байтов строку UTF-8. Сначала записывается длина строки UTF-8 в байтах (в виде 16-разрядного целого числа), за которой следуют байты символов строки. ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).writeUnsignedInt Записывает 32-разрядное целое число без знака.Файл не был открыт; файл был открыт, но без прав на запись; либо, если файл был открыт для синхронных операций (с помощью метода open()), в файл не может быть произведена запись (например, из-за отсутствия файла). IOErrorflash.errors:IOErrorvalueuintЗначение байта в виде целого числа без знака. Записывает 32-разрядное целое число без знака. ioErrorflash.events:IOErrorEventВы не можете произвести запись в файл (например, потому что файл отсутствует). Данное событие вызывается только для файлов, открытых для асинхронных операций (с помощью метода openAsync()). Вы не можете произвести запись в файл (например, потому что файл отсутствует).bytesAvailable Возвращает число байтов данных, доступных для чтения во входном буфере.uint Возвращает число байтов данных, доступных для чтения во входном буфере. В коде должен быть вызов свойства bytesAvailable, проверяющий доступность необходимого объема данных до того, как будет выполнена попытка их считывания с помощью одного из методов чтения. endian Порядок байтов данных, константа BIG_ENDIAN или LITTLE_ENDIAN класса Endian.String Порядок байтов данных, константа BIG_ENDIAN или LITTLE_ENDIAN класса Endian. objectEncoding Указывает, какой формат, AMF3 или AMF0, используется для записи или чтения бинарных данных методом readObject() или writeObject().uint Указывает, какой формат, AMF3 или AMF0, используется для записи или чтения бинарных данных методом readObject() или writeObject().

Значение представлено константой из класса ObjectEncoding. По умолчанию используется формат AMF3.

ObjectEncodingreadObject()writeObject()
position Текущее положение в файле.Number Текущее положение в файле.

Данное значение изменяется при следующих условиях:

  • Если явно задано свойство.
  • Если производится считывание из объекта FileStream (с использованием одного из методов чтения).
  • Если производится запись в объект FileStream.

Положение определяется как Number (а не uint) для поддержки файлов длиной более 232 байтов. Значение данного свойства всегда представлено целым числом до 253. Если задать это значение дробным числом, то оно будет округлено до целого в меньшую сторону.

Если при асинхронном чтении файла задать свойство position, приложение начнет заполнять буфер чтения данными, начиная с указанного положения, а свойство bytesAvailable может принять значение 0. Дождитесь события complete, прежде чем использовать метод read для чтения данных или дождитесь события progress и проверьте свойство bytesAvailable, прежде чем использовать метод read.

На примере следующего кода показано, как обновляется свойство position объекта FileStream по мере считывания приложением данных из файла. import flash.fileSystem.*; import flash.utils.ByteArray; import flash.events.Event; var sourceFile:File = File.documentsDirectory.resolvePath("Apollo Test/test.txt"); var stream:FileStream = new FileStream(); stream.addEventListener(Event.COMPLETE, readBytes); stream.openAsync(sourceFile, FileMode.READ); function readBytes(e:Event):void { var bytes:ByteArray = new ByteArray(); trace("position 0:", stream.position); // 0 bytes[0] = stream.readByte(); trace("position 1:", stream.position); // 1 fileStream.readBytes(bytes, stream.position, 4); trace("position 2:", stream.position); // 5 stream.close(); }
readAhead Минимальный объем данных, читаемых с диска в асинхронном режиме.Number Минимальный объем данных, читаемых с диска в асинхронном режиме.

Это свойство указывает, сколько данных пытается считать асинхронный поток за точкой текущего положения. Данные считываются блоками на основе размера страницы файловой системы. Поэтому, если для readAhead установлено значение 9000 в компьютерной системе с размером страницы 8 КБ (8192 байт), среда выполнения одновременно считывает следующие 2 блока или 16384 байт данных. Значение этого свойства по умолчанию — бесконечность: по умолчанию из файла, открытого для асинхронного чтения, данные считываются, пока не будет достигнут конец файла.

Считывание данных из буфера чтения не влияет на значение свойства readAhead. При считывании данных из буфера новые данные считываются в буфер для его пополнения.

Свойство readAhead не влияет на файл, открытый в синхронном режиме.

При считывании данных в асинхронном режиме объект FileStream отправляет события progress. В методе обработчика событий для события progress проверьте доступность необходимого количества байтов (это можно проверить с помощью свойства bytesAvailable), а затем считайте данные из буфера чтения с помощью метода read.

На примере следующего кода показано, как с помощью свойства readAhead ограничить объем данных, считываемых в файл, до 100 байтов: import flash.filesystem.*; var file:File = File.desktopDirectory.resolvePath("test.txt"); var fileStream:FileStream = new FileStream(); fileStream.readAhead = 100; fileStream.addEventListener(ProgressEvent.PROGRESS, readProgressHandler) fileStream.openAsync(file, FileMode.READ); var results:ByteArray; function readProgressHandler(event:ProgressEvent):void { if (fileStream.bytesAvailable >= 100) { fileStream.readBytes(results, 0, 100); } }
FileMode Класс FileMode определяет строковые константы, которые применяются в параметре fileMode методов open() и openAsync() класса FileStream.Object Класс FileMode определяет строковые константы, которые применяются в параметре fileMode методов open() и openAsync() класса FileStream. Параметр fileMode этих методов определяет доступные действия объекта FileStream при открытии файла.

На основании значения параметра fileMode, заданного методом open, могут быть доступны следующие действия в различных сочетаниях:

  • Чтение — объект FileStream может считывать данные из файла.
  • Запись — объект FileStream может записывать данные в файл.
  • Создание — объект FileStream при открытии создает несуществующий файл.
  • Сокращение при открытии — данные в файле удаляются при открытии (прежде, чем начинается запись каких-либо данных).
  • Добавление записываемых данных — данные всегда записываются в конец файла (при вызове любого метода записи).

В таблице ниже показаны возможные действия каждой из констант в классе FileMode при ее применении в качестве параметра fileMode метода open объекта FileStream:

Константа FileModeЧтениеСоздание сценариев на языкеСозданиеСокращение при открытииДобавление записываемых данныхREAD WRITE APPEND UPDATE
FileStream.open()FileStream.openAsync()APPEND Используется для открытия файла только для записи, при этом все записываемые данные добавляются в конец файла.appendString Используется для открытия файла только для записи, при этом все записываемые данные добавляются в конец файла. При открытии создаются все несуществующие файлы. READ Используется для открытия файла в режиме «только для чтения».readString Используется для открытия файла в режиме «только для чтения». Файл должен существовать (несуществующие файлы не будут созданы). UPDATE Используется для открытия файла в режиме «чтение и запись».updateString Используется для открытия файла в режиме «чтение и запись». При открытии создаются все несуществующие файлы. WRITE Используется для открытия файла в режиме «только для записи».writeString Используется для открытия файла в режиме «только для записи». После открытия все несуществующие файлы будут созданы, а все существующие файлы будут сокращены (их данные будут удалены).
StorageVolumeInfo Объект StorageVolumeInfo отправляет объект StorageVolumeChangeEvent, когда устанавливается или извлекается том хранения.flash.events:EventDispatcher Объект StorageVolumeInfo отправляет объект StorageVolumeChangeEvent, когда устанавливается или извлекается том хранения. Статическое свойство StorageVolume.storageVolume ссылается на отдельный объект StorageVolumeInfo, который отправляет события. Класс StorageVolumeInfo также определяет метод getStorageVolumes для перечисления томов хранения, установленных в данный момент

Поддержка в профилях AIR: эта функция поддерживается во всех компьютерных операционных системах, но не поддерживается во всех средах AIR для телевизионных устройств. Она также не поддерживается на мобильных устройствах. Используйте свойство StorageVolumeInfo.isSupported, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

В современных версиях ОС Linux объект StorageVolumeInfo отправляет только события storageVolumeMount и storageVolumeUnmount для физических устройств и сетевых дисков, установленных в определенных местоположениях.

storageVolumeUnmount Отправляется при извлечении тома хранения.flash.events.StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNTflash.events.StorageVolumeChangeEvent Отправляется при извлечении тома хранения.

В современных версиях ОС Linux объект StorageVolumeInfo отправляет только события storageVolumeMount и storageVolumeUnmount для физических устройств и сетевых дисков, установленных в определенных местоположениях.

storageVolumeMount Отправляется при установке тома хранения.flash.events.StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNTflash.events.StorageVolumeChangeEvent Отправляется при установке тома хранения.

В современных версиях ОС Linux объект StorageVolumeInfo отправляет только события storageVolumeMount и storageVolumeUnmount для физических устройств и сетевых дисков, установленных в определенных местоположениях.

getStorageVolumes Возвращает вектор объектов StorageVolume, соответствующих томам хранилищ, установленных в данный момент. Возвращает вектор объектов StorageVolume, соответствующих томам хранилищ, установленных в данный момент.

В современных версиях ОС Linux этот метод возвращает объекты, соответствующие физическим устройствам и сетевым дискам, установленным в определенных местоположениях.

Следующий код отображает собственный путь для корневого каталога каждого установленного тома хранения: var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>; volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); for (var i:int = 0; i < volumes.length; i++) { trace(volumes[i].rootDirectory.nativePath); }
flash.filesystem.StorageVolume
isSupported Свойству isSupported задается значение true, если текущая платформа поддерживает класс StorageVolumeInfo, в противном случае задается значение false.Boolean Свойству isSupported задается значение true, если текущая платформа поддерживает класс StorageVolumeInfo, в противном случае задается значение false. storageVolumeInfo Одиночный экземпляр объекта StorageVolumeInfo.flash.filesystem:StorageVolumeInfo Одиночный экземпляр объекта StorageVolumeInfo. Создайте для этого объекта прослушиватели событий storageVolumeMount и storageVolumeUnmount.
File Объект File представляет собой путь к файлу или каталогу.flash.net:FileReference Объект File представляет собой путь к файлу или каталогу. Это может быть существующий или еще не существующий файл или каталог. Так, можно задать путь к файлу или каталогу, который вы планируете создать.

Класс File предлагает некоторые свойства и методы для получения информации о файловой системе и для выполнения таких операций, как копирование файлов и каталогов.

Объекты File можно использовать с классом FileStream для чтения и записи файлов.

Класс File является расширением класса FileReference. Класс FileReference, доступный в Flash® Player и Adobe® AIR®, содержит указатель на файл, а в класс File добавлены свойства и методы, не представленные в Flash Player (при проигрывании SWF-файла в обозревателе) из соображений безопасности.

Класс File содержит статические свойства, которые позволяют указать часто используемые местоположения каталогов. К таким статическим свойствам относятся следующие:

  • File.applicationStorageDirectory — каталог хранилища, который является уникальным для каждого установленного приложения AIR
  • File.applicationDirectory — каталог только для чтения, в который устанавливается приложение (вместе с установленными активами)
  • File.desktopDirectory — каталог рабочего стола пользователя
  • File.documentsDirectory — каталог с документами пользователя
  • File.userDirectory — каталог пользователя

В различных операционных системах эти свойства имеют свои показательные значения. Например, в Mac OS, Linux и Windows собственные пути к каталогу рабочего стола пользователя отличаются. Однако свойство File.desktopDirectory указывает правильный путь к каталогу рабочего стола на каждой из этих платформ. При создании приложений для работы на различных платформах используйте эти свойства как основу для указания на другие файлы, используемые приложением. Затем используйте метод resolvePath() для коррекции пути. Например, данный код указывает на файл preferences.xml в каталоге хранилища приложения:

var prefsFile:File = File.applicationStorageDirectory; prefsFile = prefsFile.resolvePath("preferences.xml");

Если указать буквенный собственный путь в ссылке на файл, то он будет работать только на одной платформе. Например, следующий объект File будет работать только в Windows:

new File("C:\Documents and Settings\joe\My Documents\test.txt")

Каталог хранилища приложения особенно полезен. Это каталог хранилища для каждого отдельного приложения AIR. Он определяется свойством File.applicationStorageDirectory.

Нельзя добавлять в каталог приложения (в который установлено приложение AIR) или удалять из этого каталога содержимое. Это может повредить приложение AIR и сделать подпись приложения недействительной. Запись в каталог приложения запрещена в AIR по умолчанию, так как доступ на запись в этот каталог не предоставлен всем учетным записям пользователя во всех операционных системах. Каталог хранилища приложения можно использовать для записи внутренних файлов приложения. Каталог документов можно использовать для записи файлов, которые пользователь будет использовать за пределами приложения (например, отредактированные изображения и текстовые файлы).

FileStreamdirectoryListing Вызывается, когда в результате запроса метода getDirectoryListingAsync() становится доступен список каталогов.flash.events.FileListEvent.DIRECTORY_LISTINGflash.events.FileListEvent Вызывается, когда в результате запроса метода getDirectoryListingAsync() становится доступен список каталогов. File.getDirectoryListingAsync()selectMultiple Вызывается, когда пользователь выбирает файлы из диалогового окна, открывшегося по вызову метода browseForOpenMultiple().flash.events.FileListEvent.SELECT_MULTIPLEflash.events.FileListEvent Вызывается, когда пользователь выбирает файлы из диалогового окна, открывшегося по вызову метода browseForOpenMultiple(). browseForOpenMultiple()select Вызывается, когда пользователь выбирает файл или каталог из окна просмотра файлов или каталогов.flash.events.Event.SELECTflash.events.Event Вызывается, когда пользователь выбирает файл или каталог из окна просмотра файлов или каталогов. securityError Вызывается, когда операция нарушает ограничения безопасности.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent Вызывается, когда операция нарушает ограничения безопасности. ioError Вызывается, когда при выполнении асинхронной операции над файлом происходит ошибка.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Вызывается, когда при выполнении асинхронной операции над файлом происходит ошибка. complete Вызывается при завершении асинхронной операции.flash.events.Event.COMPLETEflash.events.Event Вызывается при завершении асинхронной операции. cancel Вызывается при отмене асинхронной операции, ожидающей выполнения.flash.events.Event.CANCELflash.events.Event Вызывается при отмене асинхронной операции, ожидающей выполнения. File Функция конструктора для класса File.Неверный синтаксис параметра path. ArgumentErrorArgumentErrorpathStringnullПуть к файлу. Можно задать путь двумя способами: с помощью URL-адреса или записав путь в характерном для конкретной платформы виде.

При вводе URL-адреса можно пользоваться следующими схемами URL: file, app или app-storage. Для параметра path, использующего запись URL, действительными являются следующие значения:

  • "app:/DesktopPathTest.xml"
  • "app-storage:/preferences.xml"
  • "file:///C:/Documents%20and%20Settings/bob/Desktop" (Рабочий стол на компьютере Боба)
  • "file:///Users/bob/Desktop" (Рабочий стол на компьютере Mac Боба)

Схемы URL app и app-storage весьма полезны, т. к. могут указать на подходящий файл во всех файловых системах. Тем не менее, в двух других примерах, в которых для указания на каталог рабочего стола пользователя используется схема URL file, предпочтительно передавать аргумент no path конструктору File(), а затем назначать File.desktopDirectory объекту File. Таким образом, доступ к каталогу рабочего стола не будет зависеть от платформы или от пользователя.

При задании пути на компьютере Windows разделителем в аргументе может выступать обратная или левая косая черта, а на компьютере Мас OS и Linux — левая косая черта. Для параметра path, использующего собственную запись пути, действительными являются следующие значения:

  • "C:/Documents and Settings/bob/Desktop"
  • "/Users/bob/Desktop"

Тем не менее, в этих двух примерах следует передавать аргумент no path конструктору File(), а затем назначить File.desktopDirectory объекту File. Таким образом доступ к каталогу «Рабочий стол» не будет зависеть от платформы или от пользователя.

Функция конструктора для класса File.

При передаче аргумента path объект File указывает на конкретный путь, а свойства nativePath и url отражают этот путь.

Хотя можно передать аргумент path, чтобы указать путь к файлу, в результате может получиться код, предназначенный для конкретной платформы. Например, такой собственный путь, как "C:\\Documents and Settings\\bob\\Desktop", или такой URL-адрес, как "file:///C:/Documents%20and%20Settings/bob/Desktop", действителен только для Windows. Рекомендуется использовать следующие статические свойства, представляющие часто используемые каталоги и действительные для всех платформ:

  • File.applicationDirectory
  • File.applicationStorageDirectory
  • File.desktopDirectory
  • File.documentsDirectory
  • File.userDirectory

Затем можно вызвать метод resolvePath(), чтобы получить относительный путь к этим каталогам. Например, следующий код задает объект File для указания на файл settings.xml в каталоге хранилища приложения:

var file:File = File.applicationStorageDirectory.resolvePath("settings.xml");

Важно! Если передать строку URL в параметре path, URL декодируется и преобразуется в путь к файлу. Например, оператор new File("file:///c:/test/demo%20file%201%2e0.txt") создает объект File с собственным путем «c:\test\demo file 1.0.txt». (URL-адрес использует префиксы схемы file:, app: или app-storage:.) Однако, если допустимые префиксы URL-адреса пропускаются, строка пути рассматривается как собственный путь и не подвергается декодированию. Необходимо учитывать это поведение при проверке путей, полученных из потенциально ненадежных источников. Если просто проверяется строка ввода, расшифровка URL-адреса может позволить злоумышленнику обойти проверки. Всегда проверяйте окончательный путь создаваемого объекта File.

var file:File = new File( taintedString ); validate( file.nativePath ); //where validate() is your path validation function
nativePath
browseForDirectory Отображает для пользователя диалоговое окно выбора каталога.Выполняется операция обзора (browseForOpen(), browseForOpenMultiple(), browseForSave(), browseForDirectory()). IllegalOperationErrorflash.errors:IllegalOperationErrorПрограмме не предоставлены необходимые права. SecurityErrorSecurityErrortitleStringСтрока, отображаемая в строке заголовка диалогового окна. Отображает для пользователя диалоговое окно выбора каталога. При выборе каталога вызывается событие select. Свойство target события select является объектом File, указывающим на выбранный каталог.

Диалоговое окно выбора каталога не всегда отображается на переднем плане относительно окон, которые принадлежат другому окну (окна, свойство owner которых имеет непустое значение). Для предотвращения проблем, связанных с порядком окон, перед вызовом этого метода скройте подчиненные окна.

Примечание. На устройствах Android browseForDirectory() не поддерживается. Объект File незамедлительно отправляет событие cancel.

Следующий код использует метод File.browseForDirectory(), чтобы позволить пользователю выбрать каталог. После выбора каталога код выводит список содержимого этого каталога в выходных данных метода trace(). import flash.filesystem.File; import flash.events.Event; var directory:File = File.documentsDirectory; try { directory.browseForDirectory("Select Directory"); directory.addEventListener(Event.SELECT, directorySelected); } catch (error:Error) { trace("Failed:", error.message); } function directorySelected(event:Event):void { directory = event.target as File; var files:Array = directory.getDirectoryListing(); for(var i:uint = 0; i < files.length; i++) { trace(files[i].name); } }
browseForOpen()browseForSave()selectflash.net.FileFiltercancelflash.events:EventВызывается при нажатии кнопки «Отмена» в диалоговом окне «Открыть файл». Вызывается при нажатии кнопки «Отмена» в диалоговом окне «Открыть файл».selectflash.events:EventВызывается при выборе каталога и закрытии диалогового окна выбора каталога. Вызывается при выборе каталога и закрытии диалогового окна выбора каталога.ioErrorflash.events:IOErrorEventОперация обзора не поддерживается на этой платформе. Операция обзора не поддерживается на этой платформе.
browseForOpenMultiple Отображает диалоговое окно «Открыть файл», в котором можно выбрать один или несколько файлов для открытия.Выполняется операция обзора (browseForOpen(), browseForOpenMultiple(), browseForSave(), browseForDirectory()). IllegalOperationErrorflash.errors:IllegalOperationErrorПрограмме не предоставлены необходимые права. SecurityErrorSecurityErrortitleStringСтрока, отображаемая в строке заголовка диалогового окна. typeFilterArraynullМассив экземпляров FileFilter, который используется для фильтрации файлов, отображенных в диалоговом окне. Если данный параметр пропущен, то отображаются все файлы. Дополнительные сведения см. в описании класса FileFilter. Отображает диалоговое окно «Открыть файл», в котором можно выбрать один или несколько файлов для открытия.

При выборе файлов вызывается событие selectMultiple. Свойство target события select является этим объектом File. В отличие от browseForOpen(), применение метода browseForOpenMultiple() не делает объект File ссылкой на выбранные файлы. Вместо этого конечное событие selectMultiple содержит массив выбранных файлов.

Диалоговое окно «Открыть файл» не всегда отображается на переднем плане относительно окон, которые принадлежат другому окну (окна, свойство owner которых имеет непустое значение). Для предотвращения проблем, связанных с порядком окон, перед вызовом этого метода скройте подчиненные окна.

Примечание. На устройствах Android установка заголовка диалогового окна файла невозможна. Параметр title игнорируется.

Следующий код использует метод File.browseForOpenMultiple(), чтобы позволить пользователю выбрать несколько файлов. После выбора файлов код выводит список путей к ним. import flash.filesystem.*; import flash.events.FileListEvent; var docsDir:File = File.documentsDirectory; try { docsDir.browseForOpenMultiple("Select Files"); docsDir.addEventListener(FileListEvent.SELECT_MULTIPLE, filesSelected); } catch (error:Error) { trace("Failed:", error.message); } function filesSelected(event:FileListEvent):void { for (var i:uint = 0; i < event.files.length; i++) { trace(event.files[i].nativePath); } }
browseForSave()browseForOpen()browseForDirectory()selectMultipleflash.net.FileFiltercancelflash.events:EventВызывается при нажатии кнопки «Отмена» в диалоговом окне «Открыть файл». Вызывается при нажатии кнопки «Отмена» в диалоговом окне «Открыть файл».selectMultipleflash.events:FileListEventВызывается при выборе файлов и закрытии диалогового окна «Открыть файл». Вызывается при выборе файлов и закрытии диалогового окна «Открыть файл».ioErrorflash.events:IOErrorEventОперация обзора не поддерживается на этой платформе. Операция обзора не поддерживается на этой платформе.
browseForOpen Отображает диалоговое окно «Открыть файл», где можно выбрать файл для открытия.Выполняется операция обзора (browseForOpen(), browseForOpenMultiple(), browseForSave(), browseForDirectory()). IllegalOperationErrorflash.errors:IllegalOperationErrorПрограмме не предоставлены необходимые права. SecurityErrorSecurityErrortitleStringСтрока, отображаемая в строке заголовка диалогового окна. typeFilterArraynullМассив экземпляров FileFilter, который используется для фильтрации файлов, отображенных в диалоговом окне. Если данный параметр пропущен, то отображаются все файлы. Дополнительные сведения см. в описании класса FileFilter. Отображает диалоговое окно «Открыть файл», где можно выбрать файл для открытия.

При выборе файла вызывается событие select. Свойство target события select — это объект File, указывающий на выбранный файл.

Диалоговое окно «Открыть файл» не всегда отображается на переднем плане относительно окон, которые принадлежат другому окну (окна, свойство owner которых имеет непустое значение). Для предотвращения проблем, связанных с порядком окон, перед вызовом этого метода скройте подчиненные окна.

Примечание. На устройствах Android установка заголовка диалогового окна файла невозможна. Параметр title игнорируется.

Следующий код использует метод File.browseForOpen(), чтобы позволить пользователю выбрать текстовый файл. После выбора файла код считывает данные этого файла в строку. import flash.filesystem.*; import flash.events.Event; import flash.net.FileFilter; var fileToOpen:File = new File(); var txtFilter:FileFilter = new FileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml"); try { fileToOpen.browseForOpen("Open", [txtFilter]); fileToOpen.addEventListener(Event.SELECT, fileSelected); } catch (error:Error) { trace("Failed:", error.message); } function fileSelected(event:Event):void { var stream:FileStream = new FileStream(); stream.open(event.target, FileMode.READ); var fileData:String = stream.readUTFBytes(stream.bytesAvailable); trace(fileData); }
browseForSave()browseForOpenMultiple()browseForDirectory()selectflash.net.FileFiltercancelflash.events:EventВызывается при нажатии кнопки «Отмена» в диалоговом окне «Открыть файл». Вызывается при нажатии кнопки «Отмена» в диалоговом окне «Открыть файл».selectflash.events:EventВызывается при выборе файла и закрытии диалогового окна «Открыть файл». Вызывается при выборе файла и закрытии диалогового окна «Открыть файл».ioErrorflash.events:IOErrorEventОперация обзора не поддерживается на этой платформе. Операция обзора не поддерживается на этой платформе.
browseForSave Отображает диалоговое окно «Сохранить файл», в котором можно выбрать место назначения файла.Выполняется операция обзора (browseForOpen(), browseForOpenMultiple(), browseForSave(), browseForDirectory()). IllegalOperationErrorflash.errors:IllegalOperationErrorПрограмме не предоставлены необходимые права. SecurityErrorSecurityErrortitleStringСтрока, отображаемая в строке заголовка диалогового окна. Отображает диалоговое окно «Сохранить файл», в котором можно выбрать место назначения файла.

При выборе файла вызывается событие select. Свойство target события select является объектом File, который указывает на выбранное место для сохранения файла.

Диалоговое окно «Сохранить файл» не всегда отображается на переднем плане относительно окон, которые принадлежат другому окну (окна, свойство owner которых имеет непустое значение). Для предотвращения проблем, связанных с порядком окон, перед вызовом этого метода скройте подчиненные окна.

Примечание. На устройствах Android установка заголовка диалогового окна файла невозможна. Параметр title игнорируется.

Следующий код использует метод File.browseForSave(), чтобы позволить пользователю выбрать путь для сохранения файла. После выбора файлов код сохраняет данные по выбранному пути. import flash.filesystem.*; import flash.events.Event; var docsDir:File = File.documentsDirectory; try { docsDir.browseForSave("Save As"); docsDir.addEventListener(Event.SELECT, saveData); } catch (error:Error) { trace("Failed:", error.message); } function saveData(event:Event):void { var newFile:File = event.target as File; var str:String = "Hello."; if (!newFile.exists) { var stream:FileStream = new FileStream(); stream.open(newFile, FileMode.WRITE); stream.writeUTFBytes(str); stream.close(); } }
browseForDirectory()browseForOpen()selectflash.net.FileFiltercancelflash.events:EventВызывается при нажатии кнопки «Отмена» в диалоговом окне «Сохранить файл». Вызывается при нажатии кнопки «Отмена» в диалоговом окне «Сохранить файл».selectflash.events:EventВызывается при выборе файла и закрытии диалогового окна «Сохранить файл». Вызывается при выборе файла и закрытии диалогового окна «Сохранить файл».ioErrorflash.events:IOErrorEventОперация обзора не поддерживается на этой платформе. Операция обзора не поддерживается на этой платформе.
cancel Отменяет все операции, ожидающие выполнения. Отменяет все операции, ожидающие выполнения. canonicalize Устанавливает путь к файлу в качестве канонического. Устанавливает путь к файлу в качестве канонического.

Если объект File представляет собой существующий файл или каталог, при установлении пути как канонического он корректируется в соответствии с регистром в имени реального файла или каталога. Если объект File — символьная ссылка, при установлении пути как канонического он корректируется для соответствия файлу или каталогу, на который указывает ссылка, независимо от того, существует ли такой файл или каталог. В файловых системах, учитывающих регистр (например, Linux), когда существует несколько файлов, имена которых отличаются только регистром, метод canonicalize() корректирует путь в соответствии с первым найденным файлом (в порядке, определенном файловой системой).

Кроме того, при установлении канонического пути в ОС Windows короткие имена файлов переводятся в длинные.

Следующий код показывает, как с помощью метода canonicalize() найти соответствующее имя каталога, в котором используются заглавные буквы. Перед выполнением этого кода необходимо создать каталог с именем AIR Test на рабочем столе компьютера. import flash.filesystem.*; var path:File = File.desktopDirectory.resolvePath("air test"); trace(path.nativePath); path.canonicalize(); trace(path.nativePath); // ...\AIR Test Следующий код показывает, как с помощью метода canonicalize() найти длинное имя каталога Windows, исходя из его короткого имени. В данном примере предполагается, что в корне диска C: имеется каталог с именем AIR Test и коротким системным именем AIR~1. import flash.filesystem.*; var path:File = new File(); path.nativePath = "C:\\AIR~1"; path.canonicalize(); trace(path.nativePath); // C:\AIR Test
clone Возвращает копию данного объекта File.flash.filesystem:File Возвращает копию данного объекта File. Регистрации событий не копируются.

Примечание. Данный метод не копирует сам файл. Он просто создает копию экземпляра объекта File ActionScript. Для копирования файла пользуйтесь методом copyTo().

copyToAsync Начинает копирование файла или каталога из места, указанного данным объектом File, в место, заданное параметром destination.Программе не предоставлены необходимые права на запись в целевую папку. SecurityErrorSecurityErrornewLocationflash.net:FileReferenceМесто назначения нового файла. Обратите внимание, что данный объект File определяет конечный (скопированный) файл или каталог, а не путь к текущему каталогу. overwriteBooleanfalseПри значении false невозможно выполнить копирование, если файл, заданный параметром target, уже существует. При значении true в ходе операции сначала стираются все существующие файлы или каталоги с таким же именем. Начинает копирование файла или каталога из места, указанного данным объектом File, в место, заданное параметром destination.

После завершения вызывается событие complete (в случае успешного выполнения) или ioError (в случае невозможности завершения). Процесс копирования создает все необходимые родительские каталоги (если возможно).

Следующий код показывает, как скопировать файл с помощью метода copyToAsync(). Перед выполнением этого кода необходимо создать файл test1.txt во вложенном каталоге AIR Test каталога документов на компьютере. В результате копирования получается файл с именем test2.txt, который также находится во вложенном каталоге AIR Test. Если для параметра overwrite задано значение true, эта операция перезаписывает любой существующий файл test2.txt. import flash.filesystem.File; import flash.events.Event; var sourceFile:File = File.documentsDirectory; sourceFile = sourceFile.resolvePath("AIR Test/test1.txt"); var destination:File = File.documentsDirectory; destination = destination.resolvePath("AIR Test/test2.txt"); sourceFile.copyToAsync(destination, true); sourceFile.addEventListener(Event.COMPLETE, fileCopiedHandler); function fileCopiedHandler(event:Event):void { trace("Done."); }
copyTo()moveToAsync()completeflash.events:EventВызывается при успешном копировании файла или каталога. Вызывается при успешном копировании файла или каталога.ioErrorflash.events:IOErrorEventИсточник не существует; либо адресат существует, и overwrite равно false; либо источник не удалось скопировать в целевой объект; либо источник и целевой объект указывают на один файл или одну папку, и overwrite установлен на true. ОС Windows не позволяет копировать открытый файл или каталог, если открыт хотя бы один из содержащихся в нем файлов. Источник не существует; либо целевой объект существует, и overwrite равно false; либо источник не удалось скопировать в адресат; либо источник и целевой объект указывают на один файл или одну папку, и overwrite установлен на true.
copyTo Перемещает файл или каталог из места, заданного объектом File, в место, заданное параметром newLocation.Источник не существует; либо адресат существует, и overwrite равно false; либо источник не удалось скопировать в целевой объект; либо источник и целевой объект указывают на один файл или одну папку, и overwrite установлен на true. ОС Windows не позволяет копировать открытый файл или каталог, если открыт хотя бы один из содержащихся в нем файлов. IOErrorflash.errors:IOErrorПрограмме не предоставлены необходимые права на запись в целевую папку. SecurityErrorSecurityErrornewLocationflash.net:FileReferenceМесто назначения нового файла. Обратите внимание, что данный объект File определяет конечный (скопированный) файл или каталог, а не путь к текущему каталогу. overwriteBooleanfalseПри значении false невозможно выполнить копирование, если файл, заданный параметром target, уже существует. При значении true в ходе операции перезаписываются все существующие файлы или каталоги с таким же именем. Перемещает файл или каталог из места, заданного объектом File, в место, заданное параметром newLocation. Процесс копирования создает все необходимые родительские каталоги (если возможно). Следующий код показывает, как скопировать файл с помощью метода copyTo(). Перед выполнением этого кода необходимо создать файл test1.txt во вложенном каталоге AIR Test каталога документов на компьютере. В результате копирования получается файл с именем test2.txt, который также находится во вложенном каталоге AIR Test. Если для параметра overwrite задано значение true, эта операция перезаписывает любой существующий файл test2.txt. import flash.filesystem.File; import flash.events.Event; var sourceFile:FileReference = File.documentsDirectory; sourceFile = sourceFile.resolvePath("AIR Test/test1.txt"); var destination:FileReference = File.documentsDirectory; destination = destination.resolvePath("AIR Test/test2.txt"); if (sourceFile.copyTo(destination, true)) { trace("Done."); } Следующий код показывает, как скопировать файл с помощью метода copyTo(). Перед выполнением этого кода необходимо создать файл test1.txt во вложенном каталоге AIR Test основного каталога на компьютере. В результате копирования получается файл с именем test2.txt. На примере инструкций try и catch показано, как отвечать на ошибки. import flash.filesystem.File; var sourceFile:File = File.documentsDirectory; sourceFile = sourceFile.resolvePath("AIR Test/test1.txt"); var destination:File = File.documentsDirectory; destination = destination.resolvePath("AIR Test/test2.txt"); try { sourceFile.copyTo(destination, true); } catch (error:Error) { trace("Error:", error.message); } copyToAsync()moveTo()createDirectory Создает указанный каталог и все необходимые родительские каталоги.Каталог не существовал и не мог быть создан. IOErrorflash.errors:IOErrorПрограмме не предоставлены необходимые права. SecurityErrorSecurityError Создает указанный каталог и все необходимые родительские каталоги. Если каталог уже существует, никаких действий не предпринимается. Следующий код перемещает файл с именем test.txt с рабочего стола во вложенный каталог AIR Test каталога документов. С помощью вызова метода createDirectory() перед перемещением файла можно убедиться в том, что каталог AIR Test действительно существует. import flash.filesystem.*; var source:File = File.desktopDirectory.resolvePath("test.txt"); var target:File = File.documentsDirectory.resolvePath("AIR Test/test.txt"); var targetParent:File = target.parent; targetParent.createDirectory(); source.moveTo(target, true); createTempDirectory Возвращает ссылку на новый временный каталог.Объект File, ссылающийся на новый временный каталог. flash.filesystem:File Возвращает ссылку на новый временный каталог. Это новый каталог в пути временного системного каталога.

Этот метод позволяет определить новый уникальный каталог, не отправляя запрос системе.

Перед закрытием приложения рекомендуется удалять временные каталоги, так как не некоторых устройствах они не удаляются автоматически.

Следующий код использует метод createTempFile() для получения ссылки на новый временный каталог. import flash.File; var temp:File = File.createTempDirectory(); trace(temp.nativePath); При каждом выполнении этого кода создается новый (уникальный) файл.
createTempFile()
createTempFile Возвращает ссылку на новый временный файл.Объект File, ссылающийся на новый временный файл. flash.filesystem:File Возвращает ссылку на новый временный файл. Это новый файл в пути временного системного каталога.

Этот метод позволяет определить новый уникальный файл, не запрашивая об этом систему.

Перед закрытием приложения рекомендуется удалять временные файлы, так как они не удаляются автоматически.

Следующий код использует метод createTempFile() для получения ссылки на новый временный файл. import flash.File; var temp:File = File.createTempFile(); trace(temp.nativePath); При каждом выполнении этого кода создается новый (уникальный) файл.
createTempDirectory()
deleteDirectoryAsync Удаляет каталог в асинхронном режиме.Программе не предоставлены необходимые права на удаление каталога. SecurityErrorSecurityErrordeleteDirectoryContentsBooleanfalseУказывает, можно ли удалять каталог, содержащий файлы или подкаталоги. При значении false объект File вызывает событие ioError, если каталог содержит файлы или подкаталоги. Удаляет каталог в асинхронном режиме. Если этот объект File является символьной ссылкой на каталог, то удаляется эта ссылка, а не сам каталог. deleteDirectory()deleteFileAsync()moveToTrashAsync()completeflash.events:EventВызывается при успешном удалении каталога. Вызывается при успешном удалении каталога.ioErrorflash.events:IOErrorEventКаталог не может быть удален или такого каталога не существует. ОС Windows не позволяет удалять каталог, если открыт хотя бы один из содержащихся в нем файлов. Каталог не может быть удален или такого каталога не существует.deleteDirectory Удаляет каталог.Каталог нельзя удалить, или он не существует. ОС Windows не позволяет удалять каталог, если открыт хотя бы один из содержащихся в нем файлов. IOErrorflash.errors:IOErrorПрограмме не предоставлены необходимые права на удаление каталога. SecurityErrorSecurityErrordeleteDirectoryContentsBooleanfalseУказывает, можно ли удалять каталог, содержащий файлы или подкаталоги. При значении false вызов этого метода создает исключение, если каталог содержит файлы или подкаталоги. Удаляет каталог. Если этот объект File является символьной ссылкой на каталог, то удаляется эта ссылка, а не сам каталог. Следующий код создает пустой каталог, затем удаляет его с помощью метода deleteDirectory(). import flash.filesystem.File; var directory:File = File.documentsDirectory.resolvePath("Empty Junk Directory/"); File.createDirectory(directory); trace(directory.exists); // true directory.deleteDirectory(); trace(directory.exists); // false deleteDirectoryAsync()deleteFile()moveToTrash()deleteFileAsync Удаляет файл в асинхронном режиме.Программе не предоставлены необходимые права на удаление файла. SecurityErrorSecurityError Удаляет файл в асинхронном режиме. Если этот объект File является символьной ссылкой, то удаляется эта ссылка, а не целевой файл. deleteDirectoryAsync()deleteFile()moveToTrashAsync()completeflash.events:EventВызывается при успешном удалении файла. Вызывается при успешном удалении файла.ioErrorflash.events:IOErrorEventФайл не может быть удален или такого файла не существует. ОС Windows не позволяет удалять открытые файлы. Файл не может быть удален или такого файла не существует.deleteFile Удаляет файл.Файл не может быть удален или такого файла не существует. ОС Windows не позволяет удалять открытые файлы. IOErrorflash.errors:IOErrorПрограмме не предоставлены необходимые права на удаление файла. SecurityErrorSecurityError Удаляет файл. Если этот объект File является символьной ссылкой, то удаляется эта ссылка, а не целевой файл. Следующий код создает временный файл, затем вызывает метод deleteFile() для его удаления. import flash.filesystem.*; var file:File = File.createTempFile(); trace(file.exists); // true file.deleteFile(); trace(file.exists); // false deleteDirectory()deleteFileAsync()moveToTrash()getDirectoryListingAsync В асинхронном режиме формирует массив объектов File, связанных с содержимым каталога, который представляется данным объектом File. В асинхронном режиме формирует массив объектов File, связанных с содержимым каталога, который представляется данным объектом File. Следующий код показывает, как с помощью метода getDirectoryListingAsync() можно вывести список содержимого каталога пользователя. import flash.filesystem.File; import flash.events.FileListEvent; var directory:File = File.userDirectory; directory.getDirectoryListingAsync(); directory.addEventListener(FileListEvent.DIRECTORY_LISTING, directoryListingHandler); function directoryListingHandler(event:FileListEvent):void { var list:Array = event.files; for (var i:uint = 0; i < list.length; i++) { trace(list[i].nativePath); } } getDirectoryListing()getRootDirectories()Событие directoryListingioErrorflash.events:ErrorEventУ вас нет прав для чтения данного каталога или его не существует. У вас нет прав для чтения данного каталога или его не существует.directoryListingflash.events:FileListEventСодержимое каталога успешно пересчитано. Событие contents содержит свойство files, представляющее собой результирующий массив объектов File. Содержимое каталога успешно пересчитано.getDirectoryListing Возвращает массив объектов File, связанных с файлами и каталогами, размещенными в каталоге, представленном данным объектом File.Массив объектов File. Array Возвращает массив объектов File, связанных с файлами и каталогами, размещенными в каталоге, представленном данным объектом File. При использовании этого метода не рассматривается содержимое подкаталогов. Следующий код показывает, как с помощью метода getDirectoryListing() можно вывести список содержимого каталога пользователя. import flash.filesystem.File; var directory:File = File.userDirectory; var list:Array = directory.getDirectoryListing(); for (var i:uint = 0; i < list.length; i++) { trace(list[i].nativePath); } getDirectoryListingAsync()getRootDirectories()getRelativePath Находит среди двух путей к файлу относительный путь.Ссылка имеет значение null. ArgumentErrorArgumentErrorВызывающий оператор не находится в изолированной программной среде безопасности. SecurityErrorSecurityErrorОтносительный путь между этим файлом (или каталогом) и файлом (или каталогом) ref, если возможно; в противном случае — null. Stringrefflash.net:FileReference Объект File, относительно которого задан путь. useDotDotBooleanfalse Указывает, может ли конечный относительный путь использовать компоненты «..». Находит среди двух путей к файлу относительный путь.

Относительный путь — это список компонентов, которые могут быть добавлены (разрешены по отношению) к этой ссылке для обнаружения второй (параметрической) ссылки. Для записи возвращенного относительного пути используется разделитель «/».

В других случаях относительные пути могут содержать ссылки «..», но такие пути не могут превышать предельного объема.

getRootDirectories Возвращается массив объектов File, в котором перечислены корневые каталоги файловой системы.Массив объектов File, в котором перечислены корневые каталоги. Array Возвращается массив объектов File, в котором перечислены корневые каталоги файловой системы.

Например, в ОС Windows это список томов, таких как C: и D:. Пустой том, например CD- или DVD-привод, в который не установлен диск, не учитывается в массиве. В Mac OS и Linux этот метод всегда возвращает уникальный корневой каталог компьютера (каталог «/»)

В файловых системах, в которых чтение корневого каталога невозможно, например в файловой системе Android, свойства возвращенного объекта File не всегда отражают истинное значение. Например, на платформе Android свойство spaceAvailable возвращает значение 0.

Следующий код выводит список корневых каталогов: import flash.filesystem.File; var rootDirs:Array = File.getRootDirectories(); for (var i:uint = 0; i < rootDirs.length; i++) { trace(rootDirs[i].nativePath); }
moveToAsync Перемещает файл или каталог из места, заданного объектом File, в место, заданное параметром newLocation.Программе не предоставлены необходимые права на перемещение файла. SecurityErrorSecurityErrornewLocationflash.net:FileReferenceМесто назначения для перемещения. Этот объект указывает путь к конечному (перемещенному) файлу или каталогу, а не к исходному каталогу. overwriteBooleanfalseПри значении false перемещение не выполняется, если файл target уже существует. При значении true в ходе операции сначала стираются все существующие файлы или каталоги с таким же именем. Перемещает файл или каталог из места, заданного объектом File, в место, заданное параметром newLocation.

Для переименования файла задайте параметр destination, чтобы он указывал на путь в каталог, содержащий файл, но с другим именем файла.

Процесс перемещения создает все необходимые родительские каталоги (если возможно).

Следующий код показывает, как переименовать файл с помощью метода moveToAsync(). Исходное имя файла test1.txt в результате меняется на имя test2.txt. Так как и исходный, и целевой объекты File указывают на один и тот же каталог (вложенный каталог Apollo Test каталога документов пользователя), метод moveToAsync() переименовывает файл, а не перемещает его в новый каталог. Перед выполнением этого кода необходимо создать файл test1.txt во вложенном каталоге Apollo Test каталога документов на компьютере. Если для параметра overwrite задано значение true, эта операция перезаписывает любой существующий файл test2.txt. import flash.filesystem.File; import flash.events.Event; var sourceFile:File = File.documentsDirectory; sourceFile = sourceFile.resolvePath("Apollo Test/test1.txt"); var destination:File = File.documentsDirectory; destination = destination.resolvePath("Apollo Test/test2.txt"); var sourceFile.moveToAsync(destination, true); sourceFile.addEventListener(Event.COMPLETE, fileMoveCompleteHandler); function fileMoveCompleteHandler(event:Event):void { trace("Done.") }
copyToAsync()moveTo()moveToTrashAsync()completeflash.events:EventВызывается при успешном перемещении файла или каталога. Вызывается при успешном перемещении файла или каталога.ioErrorflash.events:IOErrorEventИсточник не существует; либо адрес назначения существует, и overwrite имеет значение false; либо источник невозможно переместить в целевое местоположение; либо источник и адресат указывают на один файл или одну папку, и для overwrite установлено значение true. ОС Windows не позволяет перемещать открытый файл или каталог, если открыт хотя бы один из содержащихся в нем файлов. Источник не существует; либо адрес назначения существует, и overwrite равно false; либо источник не удалось переместить в целевой объект; либо источник и адресат указывают на один файл или одну папку, и overwrite установлен на true.
moveToTrashAsync Перемещает файл или каталог в корзину в асинхронном режиме.Программе не предоставлены необходимые права на перемещение файла в корзину. SecurityErrorSecurityError Перемещает файл или каталог в корзину в асинхронном режиме.

Примечание. В операционных системах, которые не поддерживают концепцию восстанавливаемой папки корзины, файлы сразу же удаляются.

moveToTrash()ioErrorflash.events:IOErrorEventОперационная система не разрешила выполнить операцию, либо файла или каталога не существует. ОС Windows не позволяет перемещать открытый файл или каталог, если открыт хотя бы один из содержащихся в нем файлов. Операционная система не позволяет выполнить операцию, либо файл или каталог не существуют.completeflash.events:EventВызывается при успешном перемещении файла или каталога в корзину. Вызывается при успешном перемещении файла или каталога в корзину.
moveToTrash Перемещает файл или каталог в корзину.Операционная система не разрешила выполнить операцию, либо файла или каталога не существует. ОС Windows не позволяет перемещать открытый файл или каталог, если открыт хотя бы один из содержащихся в нем файлов. IOErrorflash.errors:IOErrorПрограмме не предоставлены необходимые права на перемещение файла в корзину. SecurityErrorSecurityError Перемещает файл или каталог в корзину.

Примечание. В операционных системах, которые не поддерживают концепцию восстанавливаемой папки корзины, файлы сразу же удаляются.

moveToTrashAsync()
moveTo Перемещает файл или каталог из места, заданного объектом File, в место, заданное параметром destination.Источник не существует; либо адресат существует, и overwrite установлен на false; либо исходный файл или каталог не мог быть перемещен в целевое местоположение; либо источник и адресат указывают на один файл или одну папку, и overwrite установлен на true. ОС Windows не позволяет перемещать открытый файл или каталог, если открыт хотя бы один из содержащихся в нем файлов. IOErrorflash.errors:IOErrorПрограмме не предоставлены необходимые права на перемещение файла. SecurityErrorSecurityErrornewLocationflash.net:FileReferenceМесто назначения для перемещения. Этот объект указывает путь к конечному (перемещенному) файлу или каталогу, а не к исходному каталогу. overwriteBooleanfalseПри значении false перемещение не выполняется, если файл target уже существует. При значении true в ходе операции сначала стираются все существующие файлы или каталоги с таким же именем. Перемещает файл или каталог из места, заданного объектом File, в место, заданное параметром destination.

Для переименования файла задайте параметр destination, чтобы он указывал на путь в каталог, содержащий файл, но с другим именем файла.

Процесс перемещения создает все необходимые родительские каталоги (если возможно).

Следующий код показывает, как переименовать файл с помощью метода moveTo(). Исходное имя файла test1.txt в результате меняется на имя test2.txt. Так как и исходный, и целевой объекты File указывают на один и тот же каталог (вложенный каталог Apollo Test каталога документов пользователя), метод moveTo() переименовывает файл, а не перемещает его в новый каталог. Перед выполнением этого кода необходимо создать файл test1.txt во вложенном каталоге AIR Test каталога документов на компьютере. Если для параметра overwrite задано значение true, эта операция перезаписывает любой существующий файл test2.txt. import flash.filesystem.File; import flash.events.Event; var sourceFile:File = File.documentsDirectory; sourceFile = sourceFile.resolvePath("AIR Test/test1.txt"); var destination:File = File.documentsDirectory; destination = destination.resolvePath("Apollo Test/test2.txt"); try { sourceFile.moveTo(destination, true); } catch (error:Error) { trace("Error:" + error.message); } Следующий код показывает, как переместить файл с помощью метода moveTo(). Исходным файлом является файл test1.txt во вложенном каталоге Apollo Test каталога документов пользователя, и этот метод перемещает данный файл во вложенный каталог Results. Перед выполнением этого кода необходимо создать файл test1.txt во вложенном каталоге AIR Test основного каталога на компьютере. На примере инструкций try и catch показано, как отвечать на ошибки. import flash.filesystem.File; var sourceFile:File = File.documentsDirectory; sourceFile = sourceFile.resolvePath("AIR Test/test1.txt"); var destination:File = File.documentsDirectory; destination = destination.resolvePath("AIR Test/Results/test1.txt"); try { sourceFile.moveTo(destination, true); } catch (error:Error) { trace("Error:" + error.message); }
copyTo()moveToAsync()moveToTrash()
openWithDefaultApplication Открывает файл в программе, назначенной в операционной системе для открытия данного типа файлов.(ОС Mac OS и Linux) Не найдено приложение, с помощью которого можно открыть файл. (В ОС Windows попытка открыть файл, с которым не связано ни одно приложение, заканчивается неудачей, при этом не выдается исключение.) ErrorErrorФайл находится в каталоге программы или относится к запрещенному типу. Эта ошибка не распространяется на приложения AIR, устанавливаемые с помощью собственной программы установки (то есть приложения расширенного рабочего стола). IllegalOperationErrorflash.errors:IllegalOperationErrorФайл не существует, или нет программы, назначенной для его открытия. IOErrorflash.errors:IOErrorФайл не существует. ReferenceErrorReferenceError Открывает файл в программе, назначенной в операционной системе для открытия данного типа файлов.

AIR препятствует использованию метода File.openWithDefaultApplication() для открытия определенных файлов. В ОС Windows AIR препятствует открытию файлов определенного типа (с расширениями, перечисленными ниже). В системах Mac OS и Linux среда выполнения AIR не позволяет открывать файлы, которые запускаются в специальных приложениях, перечисленных ниже. При попытке открыть такие файлы с помощью метода openWithDefaultApplication() выдается исключение. Однако эти ограничения не распространяются на программы AIR, устанавливаемые с помощью собственной программы установки (то есть расширенные программы профиля рабочего стола). Они могут открывать файлы любого типа.

Нельзя открывать документы из каталога программы.

В приведенной ниже таблице перечислены расширения файлов, запрещенные в ОС Windows, а также программы, которые нельзя запускать в ОС Mac OS и ОС Linux.

Расширение документа в ОС Windows Тип Соответствующая программа в ОС Mac OS Соответствующая программа в ОС Linux bat Командный файл Терминал Нет программы по умолчанию cmd Командный файл DOS и Windows Терминал Нет программы по умолчанию com Команда Терминал Нет программы по умолчанию csh Сценарий командного процессора UNIX csh Терминал /bin/csh dash Сценарий командного процессора UNIX dash Терминал /bin/dash ksh Сценарий командного процессора UNIX ksh Терминал /bin/ksh sh Сценарий командного процессора UNIX Терминал /bin/bash tcsh Сценарий командного процессора UNIX tcsh Терминал /bin/tcsh zsh Сценарий командного процессора UNIX zsh Терминал /bin/zsh exe Исполняемый файл Исполняемый бит, расширение .app /lib/ld.so lnk Файл комбинации клавиш Windows Исполняемый бит, расширение .app Ссылки в ОС Linux, набор исполняемых битов, нет программы по умолчанию. pif Файл сведений о программе Исполняемый бит, расширение .app нет reg Регистрационная информация/ключ для Windows 95/98, файл данных реестра нет нет scf Команда проводника Windows ScriptEditor, AutomatorRunner нет shb, shs Файл объектов Shell Scrap Object нет нет prg Программный файл нет нет vb, vbe, vbs Файлы VBScript нет нет vsmacros Проект двоичных макросов Visual Studio .NET нет нет ws, wsc, wsf, wsh Файлы сценариев Windows ScriptEditor, AutomatorRunner нет fxp Исходный код, скомпилированный с помощью Fox Pro нет нет mas Сохраненные процедуры Microsoft Access нет нет scr Заставка экрана Windows нет нет py, pyc Файл сценария Python Python Python pl Файл сценария языка Perl Терминал perl cgi Файл сценария Common Gateway Interface Терминал perl msi, msm, msp, mst, idt, cub, pcp Файл программы установки Windows installer нет job Объект «задание» планировщика заданий Windows нет нет jar, js, jse Файл архива Java, файл JavaScript, файл сценария с использованием кода JScript JarLauncher jar url Ярлык Интернета нет нет hta HTML-приложение нет нет

Только для ОС Mac OS X Тип Программа в ОС Mac OS Соответствующая программа в ОС Linux нет Апплет Mac OS X Java AppletLauncher нет нет Подключаемый модуль Mac OS X AppleScript systemevents нет нет Графический элемент Mac OS X dock, dashboardlauncher нет

Расширение документа только для ОС Linux Тип Соответствующая программа в ОС Mac OS Программа Linux rb Сценарий командного процессора Ruby нет ruby desktop Файлы и ярлыки на рабочем столе нет Нет программы по умолчанию directory Файлы и ярлыки каталогов нет Нет программы по умолчанию

Следующий код дает пользователю возможность перейти к файлу MP3 и открыть его в приложении по умолчанию для воспроизведения MP3. import flash.filesystem.File; import flash.net.FileFilter; var file:File = File.documentsDirectory; var mp3Filter:FileFilter = new FileFilter("MP3 Files", "*.mp3"); file.browseForOpen("Open", [mp3Filter]); file.addEventListener(Event.SELECT, fileSelected); function fileSelected(e:Event):void { file.openWithDefaultApplication(); }
downloadedNativeProcess
resolvePath Создает новый объект File с относительным для данного объекта File путем, на основе параметра path (строки).Новый объект File, указывающий на получившийся путь. flash.filesystem:FilepathStringПуть, который нужно добавить в конец пути данного объекта File (если параметр path представляет относительный путь); или возвращаемый путь (если параметр path представляет абсолютный путь). Создает новый объект File с относительным для данного объекта File путем, на основе параметра path (строки).

В качестве параметра path можно использовать относительный или абсолютный путь.

При указании относительного пути заданный path добавляется в конец пути объекта File. Однако использование «..» в записи path может вернуть путь, не являющийся дочерним путем объекта File. Полученная ссылка не обязательно должна ссылаться на действительное место расположения файловой системы.

При указании абсолютной ссылки на файл метод возвращает объект File, указывающий на этот путь. В абсолютной ссылке на файл должен использоваться допустимый синтаксис пути, присущий операционной системе пользователя (например, "C:\\test" в Windows). Не используйте URL-адрес (например, file:///c:/test) в качестве параметра path.

Все полученные пути нормализуются следующим образом:

  • Все элементы «.» игнорируются.
  • Все элементы «..» замещают родительские записи.
  • Ни одна ссылка «..», достигающая корневого каталога файловой системы или корневого каталога хранения данных приложения, не проходит этот узел; такие ссылки игнорируются.

В качестве разделителя в записи пути всегда следует использовать левую косую черту (/). В ОС Windows также можно использовать обратную косую черту (\), но этого делать не следует. Использование обратной наклонной черты может привести к тому, что программы не смогут работать на других платформах.

Имена файлов и каталогов в Linux чувствительны к регистру.

applicationDirectory Папка с установленными файлами приложения.flash.filesystem:File Папка с установленными файлами приложения.

Свойство url для этого объекта использует схему URL-адресов app (не схему file). Это означает, что строка url открывается записьюapp: (а не file:). Кроме того, если создается объект File, связанный с каталогом File.applicationDirectory (с помощью метода resolvePath()), то url объекта File также использует схему URL-адреса app (как в примере).

Примечание. В файлы или каталоги, в путях которых используется схема URL-адреса app:, невозможно производить запись. Также невозможно удалять или создать файлы и папки с путями, в которых используется схема URL-адреса app:. Изменение содержимого в каталоге программы не является оптимальным методом по причинам, связанным с безопасностью, и блокируется операционной системой на некоторых платформах. Если требуется сохранить какие-то данные приложения, лучше использовать каталог хранения данных приложения (File.applicationStorageDirectory). Если необходимо предоставить какому-либо содержимому в каталоге хранения программы доступ к отдельным функциям программы (API-интерфейсы AIR), можно поместить эти функции в изолированную программную среду безопасности.

Свойство applicationDirectory позволяет создать ссылку на каталог приложения, который будет действительным для всех платформ. Если задать объект File для ссылки на каталог приложения с помощью свойства nativePath или url, эта ссылка будет работать только на той платформе, для которой этот путь является действительным.

На платформе Android свойство nativePath объекта File, указывающее на каталог программы, является пустой строкой. Используйте свойство url для доступа к файлам программы.

applicationStorageDirectory
applicationStorageDirectory Каталог для хранения данных приложения.flash.filesystem:File Каталог для хранения данных приложения.

Каждое приложение AIR имеет свой постоянный каталог для хранения данных, который создается при первом вызове File.applicationStorageDirectory. Этот каталог очень удобен для хранения данных приложения.

При удалении программы AIR удаление каталога хранения программы и ее файлов программой удаления зависит от платформы.

Свойство url для этого объекта использует схему URL-адреса app-storage (не схему file). Это означает, что строка url открывается записьюapp-storage: (а не file:). Кроме того, если создается объект File, связанный с каталогом File.applicationStoreDirectory (с помощью метода resolvePath()), то url объекта File также использует схему URL-адреса app-storage (как в примере).

Свойство applicationStorageDirectory позволяет создать ссылку на каталог хранилища приложения, который будет действительным для всех платформ. Если задать объект File для ссылки на каталог хранилища приложения с помощью свойства nativePath или url, эта ссылка будет работать только на той платформе, для которой этот путь является действительным.

Следующий код создает объект File, указывающий на вложенный каталог images в каталоге хранилища приложения. import flash.filesystem.File; var tempFiles:File = File.applicationStorageDirectory; tempFiles = tempFiles.resolvePath("images/"); trace(tempFiles.url); // app-storage:/images
desktopDirectory Каталог рабочего стола пользователя.flash.filesystem:File Каталог рабочего стола пользователя.

Свойство desktopDirectory позволяет создать ссылку на каталог рабочего стола, который будет действительным для всех платформ. Если задать объект File для ссылки на каталог рабочего стола с помощью свойства nativePath или url, эта ссылка будет работать только на той платформе, для которой этот путь является действительным.

Если операционная система не поддерживает каталог рабочего стола, вместо него используется соответствующий каталог файловой системы.

В среде AIR для телевизионных устройств отсутствует понятие каталога рабочего стола пользователя. Поэтому свойство desktopDirectory ссылается на тот же каталог, что и свойство File.userDirectory. Каталог пользователя уникален для программы.

Следующий код выводит список файлов и каталогов в каталоге рабочего стола пользователя. import flash.filesystem.File; var desktop:File = File.desktopDirectory; var files:Array = desktop.getDirectoryListing(); for (var i:uint = 0; i < files.length; i++) { trace(files[i].nativePath); }
documentsDirectory Каталог с документами пользователя.flash.filesystem:File Каталог с документами пользователя.

В Windows это каталог «Мои документы» (например, C:\Documents and Settings\имя_пользователя\Мои документы). В Mac OS это по умолчанию каталог /Users/имя_пользователя/Documents. В Linux это по умолчанию каталог /home/имя_пользователя/Documents (в англоязычной системе), и это свойство учитывает настройку xdg-user-dirs.

Свойство documentsDirectory позволяет создать ссылку на каталог документов, который будет действительным для всех платформ. Если задать объект File для ссылки на каталог документов с помощью свойства nativePath или url, эта ссылка будет работать только на той платформе, для которой этот путь является действительным.

Если операционная система не поддерживает каталог документов, вместо него используется соответствующий каталог файловой системы.

В среде AIR для телевизионных устройств отсутствует понятие каталога документов пользователя. Поэтому свойство documentsDirectory ссылается на тот же каталог, что и свойство File.userDirectory. Каталог пользователя уникален для программы.

Следующий код использует свойство File.documentsDirectory и метод File.createDirectory() для проверки существования каталога с именем AIR Test в каталоге документов пользователя. import flash.filesystem.File; var directory:File = File.documentsDirectory; directory = directory.resolvePath("AIR Test"); File.createDirectory(directory); trace(directory.exists); // true
downloaded Указывает, был ли файл или каталог, указанный в ссылке, загружен из Интернета.Boolean Указывает, был ли файл или каталог, указанный в ссылке, загружен из Интернета.

Это свойство имеет значение только для операционных систем, в которых файлы могут помечаться во время загрузки:

  • ОС Windows XP с пакетом обновления SP2 или более поздним и ОС Windows Vista
  • ОС Mac OS 10.5 и более поздних версий

В системах, которые не помечают загруженные файлы, такие как Linux, это свойство неприменимо (и имеет значение false).

openWithDefaultApplication()
exists Определяет, существует ли файл или каталог, на который дается ссылка.Boolean Определяет, существует ли файл или каталог, на который дается ссылка. Значение true присваивается, если объект File указывает на существующий файл или каталог, в противном случае присваивается значение false. Следующий код создает временный файл, затем удаляет его и с помощью свойства File.exists проверяет существование файла. import flash.filesystem.*; var temp:File = File.createTempFile(); trace(temp.exists); // true temp.deleteFile(); trace(temp.exists); // false icon Объект Icon, содержащий значки, заданные для этого файла.flash.desktop:Icon Объект Icon, содержащий значки, заданные для этого файла. Объект Icon является массивом объектов BitmapData, связанных с различными состояниями значков. В Linux объект Icon не содержит значков. На платформе Android свойство icon имеет значение null. На примере следующего кода показан поиск в массиве icon изображения с наибольшей высотой и присвоение этого изображения объекту Bitmap. import flash.filesystem.File; import flash.display.*; var directory:File = File.documentsDirectory; var bitmaps:Array = directory.icon.bitmaps; var bmpData:BitmapData = new BitmapData(1, 1); for (var i:uint = 0; i < bitmaps.length; i++) { if (bitmaps[i].height > bmpData.height) { bmpData = directory.icon.bitmaps[i]; } } var iconBmp:Bitmap = new Bitmap(bmpData); Этот объект Bitmap можно добавить в качестве дочернего элемента контейнера экранного объекта, например объекта Sprite или объекта Flex UIComponent. isDirectory Указывает, ведет ли ссылка на каталог.Boolean Указывает, ведет ли ссылка на каталог. Значение true присваивается, если объект File указывает на каталог, в противном случае присваивается значение false. Следующий код создает массив объектов File с указанием на файлы и каталоги в каталоге пользователя, затем с помощью свойства isDirectory выводит список только тех объектов File, которые указывают на каталоги, а не файлы. import flash.filesystem.*; var userDirFiles:Array = File.userDirectory.getDirectoryListing(); for (var i:uint = 0; i < userDirFiles.length; i++) { if (userDirFiles[i].isDirectory) { trace(userDirFiles[i].nativePath); } } isHidden Указывает, являются ли файл или каталог, на которые ведет ссылка, скрытыми. Значение true присваивается, если файл или каталог, на которые указывает ссылка, являются скрытыми, в противном случае присваивается значение false.Boolean Указывает, являются ли файл или каталог, на которые ведет ссылка, скрытыми. Значение true присваивается, если файл или каталог, на которые указывает ссылка, являются скрытыми, в противном случае присваивается значение false. Следующий код создает массив объектов File с указанием на файлы и каталоги в каталоге пользователя, затем с помощью свойства isHidden выводит список скрытых файлов и каталогов. import flash.filesystem.*; var userDirFiles:Array = File.userDirectory.getDirectoryListing(); for (var i:uint = 0; i < userDirFiles.length; i++) { if (userDirFiles[i].isHidden) { trace(userDirFiles[i].nativePath); } } isPackage Указывает, является ли каталог, на который ссылаются, пакетом.Boolean Указывает, является ли каталог, на который ссылаются, пакетом.

Значение true присваивается, если каталог, на который ссылаются, является пакетом, в противном случае присваивается значение false. Обратите внимание, что в классе File не предусмотрено прямое создание пакетов.

  • В Mac OS каталог может быть назначен пакетом и в этом случае будет отображаться в диспетчере файлов Finder как единый файл, а не как каталог. Этому свойству присваивается значение true, если каталог, на который ссылается объект, является пакетом; или значение false, если файл не является каталогом или пакетом или его не существует.
  • В других операционных системах это свойство всегда имеет значение false.
isSymbolicLink Указывает, является ли ссылка символьной.Boolean Указывает, является ли ссылка символьной.

Значение true присваивается, если объект File указывает на каталог, в противном случае присваивается значение false. Обратите внимание, что в классе File не предусмотрено прямое создание символьных ссылок.

С помощью символьных ссылок один файл может ссылаться на другой файл или каталог на диске. Не путайте символьные ссылки с псевдонимами в Mac OS и ярлыками в Windows, это не одно и то же. Псевдонимы и ярлыки всегда считаются файлами (не каталогами), а чтение или запись псевдонимов и ярлыков не изменяет файлы, на которые они указывают. Символьная ссылка, в свою очередь, повторяет поведение файла или каталога, на который она указывает. Она может считаться файлом или каталогом, а при чтении и записи символьной ссылки изменения будут производиться над самим файлом, на который она указывает, а не только над ссылкой. Удаление символьной ссылки приводит к удалению самой ссылки, а не целевого объекта.

Операционные системы Mac® OS®, Linux и Windows® Vista® поддерживают символьные ссылки. Кроме этого, в Windows свойство isSymbolicLink для объекта File, ссылающегося на точку соединения (используется в файловой системе NTFS) имеет значение true.

lineEnding Последовательность символов закрытия строки, используемая домашней операционной системой.String Последовательность символов закрытия строки, используемая домашней операционной системой.

В Mac OS и Linux это знак перевода строки (шестнадцатеричный код символа 0x0A). В ОС Windows это знак возврата каретки (шестнадцатеричный код символа 0x0D) в сочетании со знаком перевода строки (шестнадцатеричный код символа 0x0A).

Следующий код записывает строку (str) в текстовый файл и с помощью статического свойства File.lineEnding заменяет все экземпляры символа начала новой строки (представленного в коде регулярным выражением /\n/g) на предпочитаемый домашней операционной системой символ закрытия строки. import flash.filesystem.*; var str:String = "Hello\n" + "World\n"; str = str.replace(/\n/g, File.lineEnding); var file:File = File.documentsDirectory.resolvePath("AIR Test/test.txt"); var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.WRITE); fileStream.writeUTF(str); fileStream.close();
nativePath Полный путь в представлении домашней операционной системы.StringНеверный синтаксис пути. ArgumentErrorArgumentErrorВызывающий оператор не находится в изолированной программной среде безопасности. SecurityErrorSecurityError Полный путь в представлении домашней операционной системы. В Mac OS и Linux в качестве разделителя в записи пути используется левая косая черта (/). Однако в Windows можно задать свойство nativePath, используя в качестве разделителя в записи пути прямую (/) или обратную (\) косую черту, а AIR автоматически заменит все прямые косые черты обратными.

Прежде чем написать код для прямого задания свойства nativePath, подумайте, не приведет ли это к созданию кода, который будет работать только на одной конкретной платформе. Например, такой собственный путь, как C:\\Documents and Settings\\bob\\Desktop, действителен только для Windows. Рекомендуется использовать следующие статические свойства, представляющие часто используемые каталоги и действительные для всех платформ:

  • File.applicationDirectory
  • File.applicationStorageDirectory
  • File.desktopDirectory
  • File.documentsDirectory
  • File.userDirectory

Можно вызвать метод resolvePath(), чтобы получить относительный путь к этим каталогам.

Некоторые интерфейсы Flex API, например, свойство source класса SWFLoader, используют URL-адрес (свойство url объекта File), а не собственный путь (свойство nativePath).

Следующий код иллюстрирует разницу между свойством nativePath и свойством url объекта File. Комментарии содержат результаты на примере компьютера Windows. import flash.filesystem.File; var docs:File = File.documentsDirectory; trace(docs.nativePath); // C:\Documents and Settings\turing\My Documents trace(docs.url); // file:///C:/Documents%20and%20Settings/turing/My%20Documents
parent Каталог, содержащий файл или каталог, на который ссылается данный объект File.flash.filesystem:File Каталог, содержащий файл или каталог, на который ссылается данный объект File.

Если файла или каталога не существует, свойство parent все равно будет возвращать объект File, указывающий на каталог, содержащий файл или каталог, даже если его не существует.

Это свойство идентично возвращаемому значению для функции resolvePath(".."), но при этом родительскому элементу корневого каталога присваивается значение null.

Следующий код использует свойство parent, чтобы показать каталог, содержащий временный файл. import flash.filesystem.File; var tempFile:File = File.createTempDirectory(); trace(tempFile.parent.nativePath); tempFile.deleteFile();
separator Разделительный символ, используемый в домашней операционной системе.String Разделительный символ, используемый в домашней операционной системе.

В Mac OS и Linux таким разделителем является левая косая черта (/). В ОС Windows это обратная косая черта (\).

Примечание. При использовании обратной косой черты в строковом литерале необходимо вводить ее дважды (например, directory\\file.ext). Две обратных косых черты в строковом литерале идентичны одной обратной косой черте в строке.

Следующий код использует метод getRelativePath() для получения относительного пути от каталога к файлу. Затем с помощью статического свойства File.separator код заменяет символы левой косой черты (/) в обозначении пути на разделители, используемые операционной системой, т. е. на обратную косую черту (\) в Windows и левую косую черту в других операционных системах. import flash.filesystem.File; var directory:File = File.documentsDirectory.resolvePath("Apollo Test"); var file:File = File.documentsDirectory.resolvePath("Apollo Test/employees/bob/test.txt"); var relativePath:String = directory.getRelativePath(file); // employees/bob/test.txt relativePath = relativePath.replace(/\//g, File.separator); trace(relativePath); В данном примере метод replace() использует регулярное выражение /\//g для поиска соответствий всем символам левой косой черты.
spaceAvailable Доступное для использования пространство в данном местоположении File, в байтах.Number Доступное для использования пространство в данном местоположении File, в байтах.

Если объект File ссылается на каталог, spaceAvailable указывает на объем пространства в каталоге, доступный для использования файлами. Если объект File ссылается на файл, spaceAvailable указывает доступный объем увеличения файла. Если местоположение файла не существует, spaceAvailable имеет значение 0. Если объект File указывает на символическую ссылку, spaceAvailable указывает на доступное пространство в указанном символической ссылкой местоположении.

Как правило, доступное для файла или каталога пространство равно такому пространству в томе, содержащем этот файл или каталог. Однако при выделении доступного пространства могут учитываться квоты и ограничения, установленные для каталогов.

При добавлении файла или каталога в том, как правило, требуется больше места, чем фактический размер файла или содержимого каталога. Например, операционной системе может потребоваться дополнительное место для хранения информации указателей. Или секторам диска может потребоваться дополнительное пространство. К тому же, доступное пространство динамически изменяется. Поэтому выделение всего требуемого пространства для хранения файлов может быть невозможно.

systemCharset Кодировка по умолчанию, используемая домашней операционной системой.String Кодировка по умолчанию, используемая домашней операционной системой.

Возможные значения включают "windows-1252" "shift-jis", "cn-gb", "iso-8859-1" и другие. Полный список см. в разделе Поддерживаемые наборы символов.

Это значение можно использовать с методами readMultiByte() и writeMultiByte() класса FileStream.

Следующий код открывает файл (файл test.txt во вложенном каталоге AIR Test каталога документов пользователя) и использует статическое свойство File.systemCharset в качестве параметра charSet в вызове метода readMultiByte() объекта FileStream. import flash.filesystem.File; var file:File = File.documentsDirectory.resolvePath("AIR Test/test.txt"); var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.READ); var str:String = fileStream.readMultiByte(file.size, File.systemCharset); trace(str);
FileStream.readMultiByte()FileStream.writeMultiByte()
url URL-адрес данного пути к файлу.StringНеверный синтаксис URL-адреса. ArgumentErrorArgumentErrorВызывающий оператор не находится в изолированной программной среде безопасности. SecurityErrorSecurityError URL-адрес данного пути к файлу.

Если это ссылка на путь в каталог хранения данных приложения, схема URL будет app-storage. Если это ссылка на путь в каталог приложения, схема URL будет app. Во всех остальных случаях схема будет file.

Для присвоения значения свойству url рекомендуется использовать знаки пробела (вместо "%20"). AIR автоматически кодирует строки (например, переводит пробелы в "%20").

Следующий код иллюстрирует разницу между свойством nativePath и свойством url объекта File. Комментарии содержат результаты на примере компьютера Windows. import flash.filesystem.File; var docs:File = File.documentsDirectory; trace(docs.nativePath); // C:\Documents and Settings\turing\My Documents trace(docs.url); // file:///C:/Documents%20and%20Settings/turing/My%20Documents
nativePathГлобальная функция decodeURI()Глобальная функция decodeURIComponent()Глобальная функция decodeURI()Глобальная функция decodeURIComponent()
userDirectory Каталог пользователя.flash.filesystem:File Каталог пользователя.

В ОС Windows это родительский элемент каталога «Мои документы» (например, C:\Мои документы\имя_пользователя). В Mac OS это /Users/имя_пользователя. В Linux это /home/имя_пользователя.

Свойство userDirectory позволяет создать ссылку на каталог пользователя, который будет действительным для всех платформ. Если задать свойство nativePath или url объекта File напрямую, ссылка будет работать только на той платформе, для которой она является действительной.

Если операционная система не поддерживает каталог пользователя, вместо него используется соответствующий каталог файловой системы.

В среде AIR для телевизионных устройств свойство userDirectory ссылается на каталог пользователя, который уникален для программы.

Следующий код выводит список файлов и каталогов корневого уровня каталога пользователя. import flash.filesystem.File; var files:Array = File.userDirectory.listDirectory(); for (var i:uint = 0; i < files.length; i++) { trace(files[i].nativePath); }
StorageVolume Объект StorageVolume включает свойства, определяющие том хранения большoй емкости.Object Объект StorageVolume включает свойства, определяющие том хранения большoй емкости. Использовать этот класс можно двумя способами.
  • Свойство storageVolume объекта StorageVolumeChangeEvent представляет собой объект StorageVolume. Этот объект представляет установленный или извлеченный том хранения.
  • Статический метод StorageVolumeInfo.storageVolumeInfo.getStorageVolumes() возвращает вектор с объектами StorageVolume. Каждый из этих объектов StorageVolume представляет установленный том хранения.
Следующий код перечисляет свойства каждого установленного тома хранения. package { import flash.display.Sprite; import flash.filesystem.StorageVolume; import flash.filesystem.StorageVolumeInfo; public class StorageVolumeExample extends Sprite { public function StorageVolumeExample() { var volumes:Vector.<StorageVolume> = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); for (var i:int = 0; i < volumes.length; i++) { var volume:StorageVolume = volumes[i]; trace("nativePath:", volume.rootDirectory.nativePath); trace("fileSystemType:", volume.fileSystemType); trace("isRemovable:", volume.isRemovable); trace("isWritable:", volume.isWritable); trace("drive:", volume.drive); trace("name:", volume.name); trace("________________________________________________________"); } } } } Следующий код перечисляет свойства каждого установленного или извлеченного тома хранения. Обратите внимание на то, что свойство storageVolume объекта StorageVolumeChangeEvent задается только для события storageVolumeMount. Оно имеет значение null для события storageVolumeUnmount. package { import flash.display.Sprite; import flash.events.StorageVolumeChangeEvent; import flash.filesystem.StorageVolume; import flash.filesystem.StorageVolumeInfo; public class StorageVolumeChangeEventExample extends Sprite { public function StorageVolumeChangeEventExample() { StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, mountEventHandler); StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, unmountEventHandler); } public function mountEventHandler(event:StorageVolumeChangeEvent):void { var volume:StorageVolume = event.storageVolume; trace("VOLUME MOUNTED:"); trace("nativePath:", event.rootDirectory.nativePath); trace("fileSystemType:", volume.fileSystemType); trace("isRemovable:", volume.isRemovable); trace("isWritable:", volume.isWritable); trace("drive:", volume.drive); trace("name:", volume.name); trace(); } public function unmountEventHandler(event:StorageVolumeChangeEvent):void { trace("VOLUME UNMOUNTED:"); trace("nativePath:", event.rootDirectory.nativePath); trace(); } } }
flash.filesystem.StorageVolumeInfo.getStorageVolumes()flash.events.StorageVolumeChangeEvent.storageVolumeStorageVolume Функция конструктора.rootDirPathflash.filesystem:FilenameStringwritableBooleanremovableBooleanfileSysTypeStringdriveString Функция конструктора. Как правило, эта функция-конструктор не вызывается напрямую (для создания новых объектов StorageVolume). Вместо этого ссылка на объекты StorageVolume осуществляется путем обращения к свойству storageVolume объекта StorageVolumeChangeEvent или вызова метода StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(). drive Имя диска тома в ОС Windows.String Имя диска тома в ОС Windows. На других платформах это свойство имеет значение null. fileSystemType Тип файловой системы на томе хранения (например, FAT, NTFS, HFS или UFS).String Тип файловой системы на томе хранения (например, FAT, NTFS, HFS или UFS). Следующий код отображает собственный путь для корневого каталога и тип файловой системы каждого установленного тома хранения. var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>; volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); for (var i:int = 0; i < volumes.length; i++) { trace(volumes[i].rootDirectory.nativePath, "(" + volumes[i].fileSystemType + ")"); } isRemovable Рассматривает ли операционная система том хранения как съемный: да (true) или нет (false).Boolean Рассматривает ли операционная система том хранения как съемный: да (true) или нет (false).

В следующем списке приводятся значения свойства StorageVolume.isRemovable для различных типов устройств.

Тип устройстваMac OSWindowsLinuxПривод CD/DVD (внутренний)truetruetrueФлэш-накопитель USBtruetruetrueЖесткий диск USBfalsefalsetrueЖесткий диск FireWirefalsefalsetrueОбщедоступный томtruefalse- 1Сетевой дискfalsefalsefalseУстройство чтения карт памяти (пустое)- 2false- 2Устройство чтения карт памяти (с картой SD/CF)truetruetrue

1 В ОС Linux нет понятия общедоступного тома.

2 В ОС Windows пустое устройство чтения карт памяти обозначается как несъемное устройство. В ОС Mac OS и Linux пустые устройства чтения карт не обозначаются как тома хранения.

Следующий код выводит список несъемных томов хранения, за которым следует список съемных томов. var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>; volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); trace("Non-removeable volumes:"); for (var i:int = 0; i < volumes.length; i++) { if (!volumes[i].isRemovable) { trace(volumes[i].rootDirectory.nativePath); } } trace("\nRemoveable volumes:"); for (i = 0; i < volumes.length; i++) { if (volumes[i].isRemovable) { trace(volumes[i].rootDirectory.nativePath); } }
isWritable Поддерживает ли том запись: да (true) или нет (false).Boolean Поддерживает ли том запись: да (true) или нет (false).

Примечание. Можно определить объем свободного пространства в томе, вызвав свойство rootDirectory.spaceAvailble объекта StorageVolume.

Следующий код выводит список записываемых томов хранения и свободное пространство на каждом из них. var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>; volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); for (var i:int = 0; i < volumes.length; i++) { if(volumes[i].isWritable) { trace(volumes[i].rootDirectory.nativePath, volumes[i].rootDirectory.spaceAvailable); } }
flash.fileSystem.File.spaceAvailable
name Имя тома.String Имя тома. Если имени нет, это свойство имеет значение null. Следующий код отображает собственный путь для корневого каталога и имя файловой системы (если оно есть) каждого установленного тома хранения. var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>; volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); for (var i:int = 0; i < volumes.length; i++) { var name:String = new String(); if (volumes[i].name) { name = "(" + volumes[i].name + ")"; } trace(volumes[i].rootDirectory.nativePath, name); } rootDirectory Объект File, соответствующий корневому каталогу тома.flash.filesystem:File Объект File, соответствующий корневому каталогу тома. Следующий код отображает собственный путь для корневого каталога каждого установленного тома хранения: var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>; volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); for (var i:int = 0; i < volumes.length; i++) { trace(volumes[i].rootDirectory.nativePath); }