Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 02.05.2018
Сообщений: 1

Не могу разобраться с кодом для файлового менеджера

05.05.2018, 20:16. Показов 806. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сразу скажу,что код не мой,а найденный в интернете,при пробном запуске сразу же выдает ошибку,на данный момент язык знаю крайне поверхностно,поэтому прошу помощи)
import java.io.File;
import java.util.ArrayList;

import android.app.ListActivity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class main extends ListActivity {

private ArrayList<String> item = null;
private ArrayList<String> path = null;
private TextView myPath;
private String root;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

myPath = (TextView) findViewById(R.id.path);
root = Environment.getExternalStorageDirectory( ).getPath();

getDir(root);
}

private void getDir(String dirPath) {
myPath.setText("Location: " + dirPath);
item = new ArrayList<>();
path = new ArrayList<>();
File f = new File(dirPath);
File[] files = f.listFiles();

if (!dirPath.equals(root)) {
item.add(root);
path.add(root);
item.add("../");
path.add(f.getParent());
}

for (File file : files) {
if (!file.isHidden() && file.canRead()) {
path.add(file.getPath());
if (file.isDirectory()) {
item.add(file.getName() + "/");
} else {
item.add(file.getName());
}
}
}
ArrayAdapter<String> fileList = new ArrayAdapter<>(this,
R.layout.row, item);
setListAdapter(fileList);
}
}





Полный код программы:
public class FileExplorerActivity extends ListActivity {

private List<String> item = null;
private List<String> path = null;
private TextView myPath;
// private String root = "/";
private String root;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

myPath = (TextView) findViewById(R.id.path);
// путь внешнего хранилища
root = Environment.getExternalStorageDirectory( ).getPath();

getDir(root);
}

private void getDir(String dirPath) {
myPath.setText("Location: " + dirPath);
item = new ArrayList();
path = new ArrayList();
File f = new File(dirPath);
File[] files = f.listFiles();

if (!dirPath.equals(root)) {
item.add(root);
path.add(root);
item.add("../");
path.add(f.getParent());
}

for (int i = 0; i < files.length; i++) {
File file = files[i];

// path.add(file.getPath());
// if (file.isDirectory())
// item.add(file.getName() + "/");
// else
// item.add(file.getName());

// Работаем только с доступными папками и файлами
if (!file.isHidden() && file.canRead()) {
path.add(file.getPath());
if (file.isDirectory()) {
item.add(file.getName() + "/");
} else {
item.add(file.getName());
}
}
}

ArrayAdapter fileList = new ArrayAdapter(this,
R.layout.row, item);
setListAdapter(fileList);
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
File file = new File(path.get(position));

if (file.isDirectory()) {
if (file.canRead()) {
getDir(path.get(position));
} else {
new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle(
"[" + file.getName()
+ "] folder can't be read!")
.setPositiveButton("OK", null).show();
}
} else {

String exifAttribute = null;
String filename = file.getName();
String ext = filename.substring(filename.lastIndexOf( '.') + 1,
filename.length());

if (ext.equals("JPG") || ext.equals("jpg")) {
try {
ExifInterface exif = new ExifInterface(file.toString());
exifAttribute = getExif(exif);
} catch (IOException e) {
// TODO Auto-generated catch block
;
}
}

String fileinfo = "Абсолютный путь: " + file.getAbsolutePath()
+ "\n" + "Путь: " + file.getPath() + "\n" + "Родитель: "
+ file.getParent() + "\n" + "Имя: " + file.getName() + "\n"
+ "Последнее изменение: " + new Date(file.lastModified());

new AlertDialog.Builder(this).setIcon(R.draw able.ic_launcher)
.setTitle("[" + file.getName() + "]")
.setMessage(fileinfo + "\n" + exifAttribute)
// информация о файле и EXIF, если JPG
.setPositiveButton("OK", null).show();

}
}

private String getExif(ExifInterface exif) {
String myAttribute = null;
myAttribute += getTagString(ExifInterface.TAG_DATETIME, exif);
myAttribute += getTagString(ExifInterface.TAG_FLASH, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LATIT UDE, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LATIT UDE_REF, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LONGI TUDE, exif);
myAttribute += getTagString(ExifInterface.TAG_GPS_LONGI TUDE_REF, exif);
myAttribute += getTagString(ExifInterface.TAG_IMAGE_LEN GTH, exif);
myAttribute += getTagString(ExifInterface.TAG_IMAGE_WID TH, exif);
myAttribute += getTagString(ExifInterface.TAG_MAKE, exif);
myAttribute += getTagString(ExifInterface.TAG_MODEL, exif);
myAttribute += getTagString(ExifInterface.TAG_ORIENTATI ON, exif);
myAttribute += getTagString(ExifInterface.TAG_WHITE_BAL ANCE, exif);
return myAttribute;
}

private String getTagString(String tag, ExifInterface exif) {
return (tag + " : " + exif.getAttribute(tag) + "
");
}
}

Есть небольшие отличия,т.к. вносил свои правки.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2018, 20:16
Ответы с готовыми решениями:

Помогите разобраться с написанием простого файлового менеджера (listView)
Помогите разобраться с написанием простого файлового менеджера. Все что нужно от программы, пока, просто выводить в listView имя и размер...

Посоветуйте компонент для создания файлового менеджера
Есть пара компонентов для создания файлового менеджера (TreeView, ListView, их модификации, DrawGrid), может быть - больше. Кому нетрудно,...

.Net коннектор для файлового менеджера elFinder
Нашел .Net коннектор для файлового менеджера elFinder Проблема в том что мне не удаеться ее прикрутить к MVC рприложению. У меня все...

1
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
06.05.2018, 00:30
Ошибка какая?
Код не читабельное оформление имеет, его как минимум надо в теги обернуть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2018, 00:30
Помогаю со студенческими работами здесь

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

Вкладки для файлового менеджера: нужен пример
Вкладки к файловом менеджере. TabControll, TabPage, чтобы диски как то добавлялись в TabPage и переключались в TabControl, Файл менеджер...

Аналог файлового менеджера Directory Opus для Linux
Ищу аналог файлового менеджера Directory Opus для Linux Ubuntu 13.10 с возможностью использования двойного горизонтального режима. ...

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

Нужна литература, и полезные советы, для создания своего файлового менеджера
Нужна литература, и полезные советы, для создания своего файлового менеджера, кому не трудно, покидайте)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru