Перемещение

Перемещение.

Метод moveTo() требует в качестве входных параметров два объекта Entry: первый соответствует файлу, над которым выполняется операция, а второй представляет собой каталог, в который файл будет перемещен. Таким образом, сначала нужно создать ссылку на файл, используя getFile(), а затем получить ссылку на целевой каталог с помощью getDirectory(). После этого можно вызывать moveTo(), передавая ему эту информацию.

Листинг 12.13. Перемещение файлов

Function initiate(){

Databox=document. getElementById(‘databox’); var button=document. getElementById(‘fbutton’); button. addEventListener(‘click’, modify, false);

Window. webkitRequestFileSystem(window. PERSISTENT, 5*1024*1024, createhd, showerror);

}

Function createhd(fs){ hd=fs. root; path=»; show();

}

Function showerror(e){ alert(‘0i^6Ka: ‘+e. code);

}

Function modify(){

Var origin=document. getElementById(‘origin’).value;

Var destination=document. getElementById(‘destination’).value;

Hd. getFile(origin, null, function(file){

Hd. getDirectory(destination, null, function(dir){

Продолжение &

File. moveTo(dir, null, success, showerror);

},showerror);

},showerror);

}

Function success(){

Document. getElementById(‘origin’).value=»;

Document. getElementById(‘destination’).value=»;

Show();

}

Function show(){

Databox. innerHTML=»;

Hd. getDirectory(path, null, readdir, showerror);

}

Function readdir(dir){

Var reader=dir. createReader(); var read=function(){

Reader. readEntries(function(files){

If(files. length){

List(files);

Read();

}

}, showerror);

}

Read();

}

Function list(files){

For(var i=0; i<files. length; i++) { if(files[i].isFile) {

Databox. innerHTML+=files[i].name+'<br>’;

}else if(files[i].isDirectory){ databox. innerHTML+='<span onclick="changedir(»+ files[i].name+»)" class="directory">+’+ files[i].name+'</span><br>’;

}

}

}

Function changedir(newpath){ path=path+newpath+’/’; show();

}

Window. addEventListener(‘load’, initiate, false);

Для создания или открытия файловой системы и вывода на экран списка записей мы использовали функции из предыдущих примеров.

Единственная новая функция в листинге 12.13 — это modify(). Она принимает значения из полей Источник и Цель нашей формы и с учетом этой информации открывает сначала файл-источник, а затем, в случае успеха, — целевой каталог. Если обе операции завершаются успешно, то для объекта file вызывается метод moveTo() и файл перемещается в каталог, путь к которому хранится в переменной dir. Если и эта операция выполняется успешно, то происходит вызов функции success() для очистки полей формы, а затем функция show() обновляет на экране список записей.

Для тестирования этого примера вам потребуются HTML-файл с шаблоном из листинга 12.12, CSS-файл, который мы использовали с самого начала главы, и файл под названием file. js с кодом из листинга 12.13 (не забудьте перед проверкой загрузить файлы на свой сервер). Создайте в своей файловой системе файлы и каталоги, для того чтобы вам было с чем работать.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *