::cck::95::/cck::
::description::::/description::

Работа с файлами на Android

::cck::96::/cck::
::introtext::

Для работы с файлами, не забудьте в AndroidManifest добавить строчку:

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 

С помощью нее, программа будет иметь разрешение работать с файлами на SD карте.

Как получить путь к SD карте:

String sdState = android.os.Environment.getExternalStorageState(); //Получаем состояние SD карты (подключена она или нет) - возвращается true и false соответственно
if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) // если true
File sdDir = android.os.Environment.getExternalStorageDirectory();

 

::/introtext::
::fulltext::

или

String sdState = android.os.Environment.getExternalStorageState(); //Получаем состояние SD карты (подключена она или нет) - возвращается true и false соответственно
if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) // если true
String folder = Environment.getExternalStorageDirectory().toString()

Создание папки:

public static  void createDir(String folder) {
File f1 = new File(folder); //Создаем файловую переменную
if (!f1.exists()) { //Если папка не существует
f1.mkdirs(); //создаем её
}
}

Копирование файла или директории:

 from - путь к файлу/директории, который(-ое) мы будем копировать, to - путь к файлу/директории, куда мы будем копировать

public static boolean copy(String from, String to) {
try {
File fFrom = new File(from);
if (fFrom.isDirectory()) { // Если директория, копируем все ее содержимое
createDir(to);
String[] FilesList = fFrom.list();
for (int i = 0; i <= FilesList.length; i++)
if (!copy(from + "/" + FilesList[i], to + "/" + FilesList[i]))
return false; // Если при копировании произошла ошибка
} else if (fFrom.isFile()) { // Если файл просто копируем его
File fTo = new File(to);
InputStream in = new FileInputStream(fFrom); // Создаем потоки
OutputStream out = new FileOutputStream(fTo);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close(); // Закрываем потоки
out.close();
}
} catch (FileNotFoundException ex) { // Обработка ошибок
} catch (IOException e) { // Обработка ошибок
}
return true; // При удачной операции возвращаем true

 

//например:
copy("/mnt/sdcard/folder1/a.apk","/mnt/sdcard/folder2/a.apk");
//или
copy("/mnt/sdcard/folder1","/mnt/sdcard/folder2");
}

Удаление файла или директории:

path - путь к файлу или директории, который(-ую) необходимо удалить

public static void delete(String path) {
File file = new File(path); //Создаем файловую переменную
if (file.exists()) { //Если файл или директория существует
String deleteCmd = "rm -r " + path; //Создаем текстовую командную строку
Runtime runtime = Runtime.getRuntime();
try {
runtime.exec(deleteCmd); //Выполняем системные команды
} catch (IOException e) {
}
}
}

 

//например:
delete("/mnt/sdcard/a.apk")
//или
delete("/mnt/sdcard/folder")

Перемещение файла или директории:

Перемещение файла, я осуществляю объединением команд копирования файла и его удаления:

private boolean move(String from,String to) {
try {
File fFrom = new File(from);
if (fFrom.isDirectory()) { // Если директория, копируем все ее содержимое
createDir(to);
String[] FilesList = fFrom.list();
for (int i = 0; i <= FilesList.length; i++)
if (!copy(from + "/" + FilesList[i], to + "/" + FilesList[i]))
return false; // Если при копировании произошла ошибка
} else if (fFrom.isFile()) { // Если файл просто копируем его
File fTo = new File(to);
InputStream in = new FileInputStream(fFrom); // Создаем потоки
OutputStream out = new FileOutputStream(fTo);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close(); // Закрываем потоки
out.close();
}
} catch (FileNotFoundException ex) { // Обработка ошибок
} catch (IOException e) { // Обработка ошибок
}
String deleteCmd = "rm -r " + from; //Создаем текстовую командную строку в которой удаляем начальный файл
Runtime runtime = Runtime.getRuntime();
runtime.exec(deleteCmd); //Выполняем удаление с помощью команд
return true; // При удачной операции возвращаем true
}

 

//пример:
move("/mnt/sdcard/folder1/a.apk","/mnt/sdcard/folder2/a.apk")

 

::/fulltext::

Форма входа

Яндекс.Метрика