Java пишем файловый менеджер
Я в Тупике! помогите пожалуйста, но буду благодарен вдвойне если объясните и код. Взываю могущественным java программеров!
Нужно создать приложение, которое выполняет функции файлового менеджера. Приложение должно иметь следующие функции:
просмотр папок,
отображать информацию о файле / папке в табличной форме,
имя,
путь
размер,
дата создания,
дата последнего изменения,
создание папок,
возможность переименовать файлы / папки,
возможность копирования файлов / папок завершена,
возможность полностью переместить файлы / папки,
возможность удалять файлы / папки.
для этого нужно использовать такие названия LIST, INFO, CREATE_DIR, RENAME, COPY, MOVE, DELETE
__________________Помощь в написании контрольных, курсовых и дипломных работ здесь
Файловый менеджер с подсчетом времени звучания в текущей директории муз файлов
Удалось найти реализацию начала файлового менеджера. Он показывает корни жесткого диска, в корень.
Разработка приложения "Файловый менеджер"
Помогите пожалуйста с заданием:Разработать приложение «файловый менеджер». Приложение должно иметь.
Файловый менеджер - Исходники
Вот, недавно завершил проект, решил выложить сюда исходники, может кому поможет(хотя не уверен). .
Файловый IO
Я так понимаю в ходе работы программы должен создаваться файл, а в него записываться текст. Но где.
папку создать могу
и переименовывать и копировать, но как это все вместе собрать и создать само приложения чтобы пользователь все это мог сам выбирать что делать я просто хз как это сделать и все это объединить открываешь любой учебник по ООП читаешь про классы и методы. Легче все, чем тебе кажется)) чувак не хочешь помогать тупо не пиши сюда. мне твои "СОВЕТЫ" не нужны это ты делаешь, к сожалению, я держу твою тему в топе, чтобы кому интересна твоя задача с радостью ее решил.Мне как бы помогли но так как у меня на счету всего 2 программы сделанные в java то для меня это все равно еще непонятно как сделать, может кому-то интересен проект и поможет ?
Я думаю что в проекте хватит 2 два класса. В первом классе будут реализованы функциональные возможности файлов / каталогов, возможно, в виде статических методов. Во втором классе будет реализован интерфейс консоли, возможно, непосредственно в методе main (). Через интерфейс консоли, в зависимости от имени (или соответствующего числового индекса), будут вызываться функции, которые должны быть выполнены.
Интерфейс консоли должен быть выполнен со структурой while-switch. Таким образом, в цикле, в то время как имя или индекс исполняемой опции будут считаны, после чего выбор метода опции чтения будет сделан структурой переключателя, возможно, читая соответствующие параметры опции перед этим вызовом. В принципе, эта структура позволяет запустить другую опцию после ее завершения - порядок выбора опций, выбираемых пользователем (а не приложением).
Чтобы выйти из интерфейса и завершить выполнение приложения, в дополнение к существующим опциям будет введена опция EXIT.
В начале цикла while вы можете объявить логическую переменную. Логическое условие цикла while проверит, изменяется ли это значение. Если вызывается EXIT, то это логическое значение изменится. Перед чтением имени или индекса опции проверьте, является ли значение логической переменной и условие истинным, тогда оператор break (в теле структуры If существует, если есть инструкция break) - что вызовет вывод цикла while.
Реализация функциональности в первом классе должна быть такой, чтобы эти методы не содержали код входа / выхода. Каждый метод будет иметь некоторые параметры, и в зависимости от реализованной функциональности ему также потребуется определенное значение, которое необходимо будет вернуть. Значения параметров будут считаны через интерфейс консоли и будут использоваться для вызова методов.
Вы должны заметить, что в случае некоторых функций, чтобы они могли правильно выполняться для каталогов, содержащих файлы или другие каталоги, соответствующие методы должны быть реализованы рекурсивно.
Android — перспективная и динамично развивающаяся операционная система. И многие программисты хотят научиться программировать приложения для OS Android, но беглый поиск структурированных материалов в сети Интернет и, в частности, Рунете, приводит их в ступор. Действительно, до сих пор существует проблема поиска обучающих статей (особенно на русском языке) по разработке приложений для этой весьма популярной операционной системы.
Ну, что ж, будем потихоньку улучшать данную ситуацию при помощи Хабра.
Сразу предупрежу, что материалы предназначены для тех, кто не имеет опыта разработки приложений для Android, но очень-очень хочет этот опыт приобрести.
Готовимся
- Устанавливаем Eclipse Classic отсюда
- Устанавливаем SDK Starter Package отсюда
- Устанавливаем ADT Plugin при помощи данной инструкции, по той же инструкции выполняем действия, описанные в разделе Configuring the ADT Plugin
- Запускаем Eclipse, нажимаем Window > Android SDK and AVD Manager и выбираем необходимые компоненты для установки. Самый простой вариант — выбрать всё, но необходимый минимум — SDK Platform Android 2.1 (или 2.2), Android SDK Tools, Android SDK Platform-tools
Если же вы хотите тестировать свои приложения на реальном устройстве, смотрите сюда. Важно отметить, что в конечном счёте вам всё равно придётся проверять своё приложение на реальном устройстве, ведь немного странно выпускать приложение, допустим, в Android Market, как следует его не протестировав на действующих образцах телефонов/планшетов.
Создаем проект
Пришло время создать новый проект. Для этого жмём File > New > Project, выбираем в появившемся окне Android > Android Project и жмем Next. Появляется следующее окно, которое мы заполняем примерно так:
Теперь немного объяснений.
Project Name — имя проекта в среде Eclipse.
Application Name — название приложение, то самое, которое будут видеть пользователи на конечном Android-устройстве.
Package Name — название пакета. Тут всё аналогично любому Java-проекту. Важно знать, что данное имя должно быть уникальным среди всех пакетов, имеющихся на конечном устройстве. Посему достаточно эффективна классическая логика давать название, соответствующего веб-домену, записанному наоборот (как тут — ru.alwake), а далее — название самого проекта. Данный шаг в какой-то мере обеспечит уникальность названия.
Create Activity — имя класса, который в будущем будет являться подклассом класса Activity.
Min SDK Version — минимальная версия SDK. Если посмотреть выше на список Build Target в данном окне, то можно прийти к выводу, что наше приложение запускается только для устройств с Android >= 2.1 (Android 2.1 соответствует версия SDK 7). В данном случае это не очень принципиально, но пусть будет так.
Теперь можно смело нажать Finish и лицезреть свой проект в панели Package Exploper. Проект создан и неплохо бы ознакомиться с некоторой теоретической основой по устройству Android-приложений, которая неплохо изложена тут.
О нашем проекте
Для начала определимся, что мы хотим от нашего файлового менеджера. В идеале — полную замену ASTRO и eStrongs. Ну, а пока нам требуется обеспечить базовую навигацию по каталогам, причем под «базовой» мы понимаем, что нам не нужно заходить в те папки, в которые имеет доступ только root. Помимо этого, в поле сверху у нас будет отображаться наше текущее расположение в структуре каталогов.
Ну, а сначала поговорим о структуре проекта:
/res/drawable-*dpi — в этих трёх папках у нас содержатся ресурсы, предназначенные для разных расширений экрана. На данный момент там имеется всего-навсего файл icon.jpg, то есть иконка нашего приложения.
/res/layout — в данной папке содержатся xml-файлы, описывающие внешний вид форм и различных элементов форм. После создания проекта там уже имеется файл main.xml, также там нужно создать файл row.xml, который будет описывать внешний вид каждого отдельно взятого ряда (то есть элемента списка нашего файлового древа).
/res/values — тут у нас располагаются какие-либо константы, которые мы можем использовать в нашем проекте.
Стоит отметить, что данные XML-файлы можно редактировать как в визуальном режиме, так и в текстовом (меняя непосредственно xml-код). Мы будем действовать по второму способу. Для редактирования кода необходимо нажать правой кнопкой по xml-файлу в панели Package Explorer и выбрать Open with > Text Editor. Это так, на будущее ;)
Файл FileManager.java — в данном файле, собственно, содержится наш основной класс для главной и единственной формы приложения. Весь наш код в данном проекте будет размещаться тут.
Файл AndroidManifest.xml — файл с основными свойствами нашего проекта, в частности, заданными при создании проекта (такими как, например, название). Соответственно, чтобы поменять, предположим, название, нам нужно ковырять данный файл.
Остальные файлы нас пока мало интересуют.
Начинаем писать код
В общем-то, всё что было выше — базовые сведения, которые каждый Android-программист обязан знать. А теперь пришла пора разбираться непосредственно с нашим кодом.
Файл main.xml:
<? xml version ="1.0" encoding ="utf-8" ? >
< TableLayout xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation ="vertical"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent" >
< TableRow >
< TextView android:id ="@+id/titleManager"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:padding ="5dip"
/>
</ TableRow >
< TableRow >
< ListView android:id ="@id/android:list"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:layout_weight ="2"
android:drawSelectorOnTop ="false" />
</ TableRow >
</ TableLayout >
* This source code was highlighted with Source Code Highlighter .
Здесь у нас задается разметка для нашего основного Layout'а формы. TableLayout здесь значит, что элементы у нас выстроены в виде таблицы. Далее в верхней ячейке таблицы размещается элемент TextView (текстовое поле), а в нижней ячейке — ListView (список). Оба элемента имеют id, используя который, мы можем изменять содержимое элементов. Например, используя R.id.titleManager для нашего текстового поля TextView.
<? xml version ="1.0" encoding ="utf-8" ? >
< TextView
xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="fill_parent"
android:layout_height ="40sp"
android:padding ="5dip"
android:gravity ="center_vertical"
/>
* This source code was highlighted with Source Code Highlighter .
Здесь мы задаем разметку для каждого элемента нашего ListView, то есть непосредственно для каждой отдельно взятой папки или каждого файла. В данном коде у нас задается ширина каждого элемента, высота, отступ (padding) и выравнивание center_vertical — то есть центрование по вертикали.
Файл FileManager.java:
- package ru.alwake.filemanager;
- import java.io. File ;
- import java.util. ArrayList ;
- import java.util. List ;
- import android.app.AlertDialog;
- import android.app.ListActivity;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.DialogInterface.OnClickListener;
- import android.net. Uri ;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- import android.widget.TextView;
- public class FileManager extends ListActivity
- private List < String > directoryEntries = new ArrayList < String >();
- private File currentDirectory = new File ( "/" );
- //when application started
- @Override
- public void onCreate(Bundle icicle)
- super.onCreate(icicle);
- //set main layout
- setContentView(R.layout.main);
- //browse to root directory
- browseTo( new File ( "/" ));
- >
- //browse to parent directory
- private void upOneLevel()
- if ( this .currentDirectory.getParent() != null )
- this .browseTo( this .currentDirectory.getParentFile());
- >
- >
- //browse to file or directory
- private void browseTo(final File aDirectory)
- //if we want to browse directory
- if (aDirectory.isDirectory())
- //fill list with files from this directory
- this .currentDirectory = aDirectory;
- fill(aDirectory.listFiles());
- //set titleManager text
- TextView titleManager = (TextView) findViewById(R.id.titleManager);
- titleManager.setText(aDirectory.getAbsolutePath());
- > else
- //if we want to open file, show this dialog:
- //listener when YES button clicked
- OnClickListener okButtonListener = new OnClickListener()
- public void onClick(DialogInterface arg0, int arg1)
- //intent to navigate file
- Intent i = new Intent(android.content.Intent.ACTION_VIEW, Uri .parse( "file://" + aDirectory.getAbsolutePath()));
- //start this activity
- startActivity(i);
- >
- >;
- //listener when NO button clicked
- OnClickListener cancelButtonListener = new OnClickListener()
- public void onClick(DialogInterface arg0, int arg1)
- //do nothing
- //or add something you want
- >
- >;
- //create dialog
- new AlertDialog.Builder( this )
- .setTitle( "Подтверждение" ) //title
- .setMessage( "Хотите открыть файл " + aDirectory.getName() + "?" ) //message
- .setPositiveButton( "Да" , okButtonListener) //positive button
- .setNegativeButton( "Нет" , cancelButtonListener) //negative button
- .show(); //show dialog
- >
- >
- //fill list
- private void fill( File [] files)
- //clear list
- this .directoryEntries.clear();
- if ( this .currentDirectory.getParent() != null )
- this .directoryEntries.add( ".." );
- //add every file into list
- for ( File file : files)
- this .directoryEntries.add(file.getAbsolutePath());
- >
- //create array adapter to show everything
- ArrayAdapter< String > directoryList = new ArrayAdapter< String >( this , R.layout.row, this .directoryEntries);
- this .setListAdapter(directoryList);
- >
- //when you clicked onto item
- @Override
- protected void onListItemClick(ListView l, View v, int position, long id)
- //get selected file name
- int selectionRowID = position;
- String selectedFileString = this .directoryEntries. get (selectionRowID);
- //if we select ".." then go upper
- if (selectedFileString.equals( ".." ))
- this .upOneLevel();
- > else
- //browse to clicked file or directory using browseTo()
- File clickedFile = null ;
- clickedFile = new File (selectedFileString);
- if (clickedFile != null )
- this .browseTo(clickedFile);
- >
- >
- >
В начале указывается название пакета (package name).
Строки 2-18 отвечают за импорт нужных нам библиотек. Важно отметить, что импорт библиотек Eclipse может производить автоматически, как только встретит что-нибудь неизвестное.
В данном коде у нас всего 5 достаточно очевидных функций, в которых несложно разобраться. И это — скелет приложения, обеспечивающий основную навигацию по файловой структуре. Однако у данного приложения существует одна проблема — при попытке зайти в директорию, доступ к которой разрешен только суперпользователю, мы получаем ошибку и приложение завершает работу.
Соответственно, в следующий раз мы подумаем как избавиться от этой ошибки, а также о том, как сделать отображение иконок, соответствующих типу файла. Кроме того, мы подумаем о реализации функции Copy-Paste в нашем файловом менеджере.
В конечном счёте предполагается получить большое и грамотное приложение, которое должно дать основную информацию об аспектах программирования под Android.
Android — перспективная и динамично развивающаяся операционная система. И многие программисты хотят научиться программировать приложения для OS Android, но беглый поиск структурированных материалов в сети Интернет и, в частности, Рунете, приводит их в ступор. Действительно, до сих пор существует проблема поиска обучающих статей (особенно на русском языке) по разработке приложений для этой весьма популярной операционной системы.
Ну, что ж, будем потихоньку улучшать данную ситуацию при помощи Хабра.
Сразу предупрежу, что материалы предназначены для тех, кто не имеет опыта разработки приложений для Android, но очень-очень хочет этот опыт приобрести.
Готовимся
- Устанавливаем Eclipse Classic отсюда
- Устанавливаем SDK Starter Package отсюда
- Устанавливаем ADT Plugin при помощи данной инструкции, по той же инструкции выполняем действия, описанные в разделе Configuring the ADT Plugin
- Запускаем Eclipse, нажимаем Window > Android SDK and AVD Manager и выбираем необходимые компоненты для установки. Самый простой вариант — выбрать всё, но необходимый минимум — SDK Platform Android 2.1 (или 2.2), Android SDK Tools, Android SDK Platform-tools
Если же вы хотите тестировать свои приложения на реальном устройстве, смотрите сюда. Важно отметить, что в конечном счёте вам всё равно придётся проверять своё приложение на реальном устройстве, ведь немного странно выпускать приложение, допустим, в Android Market, как следует его не протестировав на действующих образцах телефонов/планшетов.
Создаем проект
Пришло время создать новый проект. Для этого жмём File > New > Project, выбираем в появившемся окне Android > Android Project и жмем Next. Появляется следующее окно, которое мы заполняем примерно так:
Теперь немного объяснений.
Project Name — имя проекта в среде Eclipse.
Application Name — название приложение, то самое, которое будут видеть пользователи на конечном Android-устройстве.
Package Name — название пакета. Тут всё аналогично любому Java-проекту. Важно знать, что данное имя должно быть уникальным среди всех пакетов, имеющихся на конечном устройстве. Посему достаточно эффективна классическая логика давать название, соответствующего веб-домену, записанному наоборот (как тут — ru.alwake), а далее — название самого проекта. Данный шаг в какой-то мере обеспечит уникальность названия.
Create Activity — имя класса, который в будущем будет являться подклассом класса Activity.
Min SDK Version — минимальная версия SDK. Если посмотреть выше на список Build Target в данном окне, то можно прийти к выводу, что наше приложение запускается только для устройств с Android >= 2.1 (Android 2.1 соответствует версия SDK 7). В данном случае это не очень принципиально, но пусть будет так.
Теперь можно смело нажать Finish и лицезреть свой проект в панели Package Exploper. Проект создан и неплохо бы ознакомиться с некоторой теоретической основой по устройству Android-приложений, которая неплохо изложена тут.
О нашем проекте
Для начала определимся, что мы хотим от нашего файлового менеджера. В идеале — полную замену ASTRO и eStrongs. Ну, а пока нам требуется обеспечить базовую навигацию по каталогам, причем под «базовой» мы понимаем, что нам не нужно заходить в те папки, в которые имеет доступ только root. Помимо этого, в поле сверху у нас будет отображаться наше текущее расположение в структуре каталогов.
Ну, а сначала поговорим о структуре проекта:
/res/drawable-*dpi — в этих трёх папках у нас содержатся ресурсы, предназначенные для разных расширений экрана. На данный момент там имеется всего-навсего файл icon.jpg, то есть иконка нашего приложения.
/res/layout — в данной папке содержатся xml-файлы, описывающие внешний вид форм и различных элементов форм. После создания проекта там уже имеется файл main.xml, также там нужно создать файл row.xml, который будет описывать внешний вид каждого отдельно взятого ряда (то есть элемента списка нашего файлового древа).
/res/values — тут у нас располагаются какие-либо константы, которые мы можем использовать в нашем проекте.
Стоит отметить, что данные XML-файлы можно редактировать как в визуальном режиме, так и в текстовом (меняя непосредственно xml-код). Мы будем действовать по второму способу. Для редактирования кода необходимо нажать правой кнопкой по xml-файлу в панели Package Explorer и выбрать Open with > Text Editor. Это так, на будущее ;)
Файл FileManager.java — в данном файле, собственно, содержится наш основной класс для главной и единственной формы приложения. Весь наш код в данном проекте будет размещаться тут.
Файл AndroidManifest.xml — файл с основными свойствами нашего проекта, в частности, заданными при создании проекта (такими как, например, название). Соответственно, чтобы поменять, предположим, название, нам нужно ковырять данный файл.
Остальные файлы нас пока мало интересуют.
Начинаем писать код
В общем-то, всё что было выше — базовые сведения, которые каждый Android-программист обязан знать. А теперь пришла пора разбираться непосредственно с нашим кодом.
Файл main.xml:
<? xml version ="1.0" encoding ="utf-8" ? >
< TableLayout xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation ="vertical"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent" >
< TableRow >
< TextView android:id ="@+id/titleManager"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:padding ="5dip"
/>
</ TableRow >
< TableRow >
< ListView android:id ="@id/android:list"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:layout_weight ="2"
android:drawSelectorOnTop ="false" />
</ TableRow >
</ TableLayout >
* This source code was highlighted with Source Code Highlighter .
Здесь у нас задается разметка для нашего основного Layout'а формы. TableLayout здесь значит, что элементы у нас выстроены в виде таблицы. Далее в верхней ячейке таблицы размещается элемент TextView (текстовое поле), а в нижней ячейке — ListView (список). Оба элемента имеют id, используя который, мы можем изменять содержимое элементов. Например, используя R.id.titleManager для нашего текстового поля TextView.
<? xml version ="1.0" encoding ="utf-8" ? >
< TextView
xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="fill_parent"
android:layout_height ="40sp"
android:padding ="5dip"
android:gravity ="center_vertical"
/>
* This source code was highlighted with Source Code Highlighter .
Здесь мы задаем разметку для каждого элемента нашего ListView, то есть непосредственно для каждой отдельно взятой папки или каждого файла. В данном коде у нас задается ширина каждого элемента, высота, отступ (padding) и выравнивание center_vertical — то есть центрование по вертикали.
Файл FileManager.java:
- package ru.alwake.filemanager;
- import java.io. File ;
- import java.util. ArrayList ;
- import java.util. List ;
- import android.app.AlertDialog;
- import android.app.ListActivity;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.DialogInterface.OnClickListener;
- import android.net. Uri ;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- import android.widget.TextView;
- public class FileManager extends ListActivity
- private List < String > directoryEntries = new ArrayList < String >();
- private File currentDirectory = new File ( "/" );
- //when application started
- @Override
- public void onCreate(Bundle icicle)
- super.onCreate(icicle);
- //set main layout
- setContentView(R.layout.main);
- //browse to root directory
- browseTo( new File ( "/" ));
- >
- //browse to parent directory
- private void upOneLevel()
- if ( this .currentDirectory.getParent() != null )
- this .browseTo( this .currentDirectory.getParentFile());
- >
- >
- //browse to file or directory
- private void browseTo(final File aDirectory)
- //if we want to browse directory
- if (aDirectory.isDirectory())
- //fill list with files from this directory
- this .currentDirectory = aDirectory;
- fill(aDirectory.listFiles());
- //set titleManager text
- TextView titleManager = (TextView) findViewById(R.id.titleManager);
- titleManager.setText(aDirectory.getAbsolutePath());
- > else
- //if we want to open file, show this dialog:
- //listener when YES button clicked
- OnClickListener okButtonListener = new OnClickListener()
- public void onClick(DialogInterface arg0, int arg1)
- //intent to navigate file
- Intent i = new Intent(android.content.Intent.ACTION_VIEW, Uri .parse( "file://" + aDirectory.getAbsolutePath()));
- //start this activity
- startActivity(i);
- >
- >;
- //listener when NO button clicked
- OnClickListener cancelButtonListener = new OnClickListener()
- public void onClick(DialogInterface arg0, int arg1)
- //do nothing
- //or add something you want
- >
- >;
- //create dialog
- new AlertDialog.Builder( this )
- .setTitle( "Подтверждение" ) //title
- .setMessage( "Хотите открыть файл " + aDirectory.getName() + "?" ) //message
- .setPositiveButton( "Да" , okButtonListener) //positive button
- .setNegativeButton( "Нет" , cancelButtonListener) //negative button
- .show(); //show dialog
- >
- >
- //fill list
- private void fill( File [] files)
- //clear list
- this .directoryEntries.clear();
- if ( this .currentDirectory.getParent() != null )
- this .directoryEntries.add( ".." );
- //add every file into list
- for ( File file : files)
- this .directoryEntries.add(file.getAbsolutePath());
- >
- //create array adapter to show everything
- ArrayAdapter< String > directoryList = new ArrayAdapter< String >( this , R.layout.row, this .directoryEntries);
- this .setListAdapter(directoryList);
- >
- //when you clicked onto item
- @Override
- protected void onListItemClick(ListView l, View v, int position, long id)
- //get selected file name
- int selectionRowID = position;
- String selectedFileString = this .directoryEntries. get (selectionRowID);
- //if we select ".." then go upper
- if (selectedFileString.equals( ".." ))
- this .upOneLevel();
- > else
- //browse to clicked file or directory using browseTo()
- File clickedFile = null ;
- clickedFile = new File (selectedFileString);
- if (clickedFile != null )
- this .browseTo(clickedFile);
- >
- >
- >
В начале указывается название пакета (package name).
Строки 2-18 отвечают за импорт нужных нам библиотек. Важно отметить, что импорт библиотек Eclipse может производить автоматически, как только встретит что-нибудь неизвестное.
В данном коде у нас всего 5 достаточно очевидных функций, в которых несложно разобраться. И это — скелет приложения, обеспечивающий основную навигацию по файловой структуре. Однако у данного приложения существует одна проблема — при попытке зайти в директорию, доступ к которой разрешен только суперпользователю, мы получаем ошибку и приложение завершает работу.
Соответственно, в следующий раз мы подумаем как избавиться от этой ошибки, а также о том, как сделать отображение иконок, соответствующих типу файла. Кроме того, мы подумаем о реализации функции Copy-Paste в нашем файловом менеджере.
В конечном счёте предполагается получить большое и грамотное приложение, которое должно дать основную информацию об аспектах программирования под Android.
File Manager supports all basic file operations. Main window contains two panes in order to copy and move selected items between them. Advanced operations are available via text fields above panes.
Main window contains two panes with corresponding text fields. Every text field shows current path and can be used to enter advanced quick commands.
Create new directory
Create new file
Rename selected item
Delete selected items
Copy selected items to directory on other pane
Move selected items to directory on other pane
Advanced commands are entered to text fields and are applied to corresponding pane. < command> ::= < keyword> < argument>
< argument> ::= < regex> | < word to find>
For example, command copy .*mus.* copies all files that contains mus.
Select all elements that matches regex or contains entered word . After selection it is possible to perform other actions.
Apply SELECT with moving.
Apply SELECT with copying.
Apply SELECT with deletion.
Apply SELECT with opening all selected items with associated programs.
To open HTML files with build-in editor just press F3 with selected file.
To count words in selected .txt file, just press button Count words. New txt file file counted words will appear in the same directory.
Observing directory changes
Background thread is used to watch active directories changes. Java Path API is used to do so in effective way instead of just pulling directory for changes every time interval.
F3 - open with HTML editor
F5 - copy
F6 - move
Delete - delete
CTRL + N - new file
CTRL + SHIFT + N - new directory
SHIFT + D - focus corresponding text field
Читайте также: