Intereting Posts
Android gradle src / androidTest / res / layout / mylayout.xml не найден в mypackage.R Android BatteryManager возвращает только 1 Элементы списка с закругленными углами Android.view.WindowManager $ BadTokenException: Невозможно добавить окно – токен null недействителен Как программно обмениваться экраном Android-устройства с другим через Wi-Fi? (Не снимок экрана) Как установить изображение в режиме просмотра изображений в Android? Волейбол не вызывает getParams для моего пользовательского запроса? Где хранить данные приложения на Android? Является ли Java API новой даты доступным в Android N? Выясните, находится ли строка состояния сверху или снизу? Есть ли способ получить имя файла с помощью API Диска Google? Android – как поймать действие Drop ItemTouchHelper, которое используется с RecyclerView Как рассчитать расстояние во время ходьбы в андроиде? Как переключить панель действий, касаясь карты, например, Uber Список ListView List List List, не отображающий фон элемента по умолчанию

Как подсчитать количество файлов с определенным расширением на Android?

В приложении, которое я разрабатываю для Android, я разрешаю пользователям создавать файлы, специфичные для моего приложения, с расширением «.rbc». До сих пор мне удавалось создавать, писать и читать из этих файлов.

Сейчас я пытаюсь подсчитать количество этих файлов, которые существуют. Я не особенно знаком с Java, и я только начинаю программировать для Android, поэтому чувствую себя немного потерянным. Все мои попытки до сих пор не смогли найти файлы с моим расширением.

Поэтому у меня в основном есть два вопроса, на которые мне нужно ответить, чтобы я мог понять это:

Где находится каталог по умолчанию, где Android хранит файлы, созданные приложением?

Есть ли у вас какие-либо примеры, вы можете дать мне подсчет файлов с определенным расширением на Android?

Большое вам спасибо за ваше время.

Некоторые тесты показали мне, что каталог по умолчанию, в котором Android хранит файлы, созданные приложением с использованием Context.getFilesDir() это /data/data/<your_package_name>/files

Чтобы подсчитать файлы в любом каталоге, вы используете File.listFiles(FileFilter) поверх корневого File.listFiles(FileFilter) . Ваш FileFilter должен быть чем-то вроде этого (для фильтрации файлов «.rbc»):

 public static class RBCFileFilter implements FileFilter { @Override public boolean accept(File pathname) { String suffix = ".rbc"; if( pathname.getName().toLowerCase().endsWith(suffix) ) { return true; } return false; } } 

Если у вас есть какая-то структура каталогов, вам нужно рекурсивно искать, тогда вам придется File.listFiles(FileFilter) по всей структуре каталогов. И это должно быть что-то вроде:

 public static List<File> listFiles(File rootDir, FileFilter filter, boolean recursive) { List<File> result = new ArrayList<File>(); if( !rootDir.exists() || !rootDir.isDirectory() ) return result; //Add all files that comply with the given filter File[] files = rootDir.listFiles(filter); for( File f : files) { if( !result.contains(f) ) result.add(f); } //Recurse through all available dirs if we are scanning recursively if( recursive ) { File[] dirs = rootDir.listFiles(new DirFilter()); for( File f : dirs ) { if( f.canRead() ) { result.addAll(listFiles(f, filter, recursive)); } } } return result; } 

И где DirFilter будет реализовывать FileFilter таким образом:

 public static class DirFilter implements FileFilter { @Override public boolean accept(File pathname) { if( pathname.isDirectory() ) return true; return false; } } 

Android обычно хранит файлы, созданные приложением в data / data / package_name_of_launching_Activity, и там вы найдете несколько папок, где файлы могут быть сохранены. Вы можете получить каталог кеша в этом пути, вызвав getCacheDir ().

Быстрая стратегия подсчета конкретных расширений может быть следующей:

Если у вас есть папка, скажите File folder = new File(folderPath) где folderPath – это абсолютный путь к папке. Вы можете сделать следующее:

 String[] fileNames = folder.list(); int total = 0; for (int i = 0; i< filenames.length; i++) { if (filenames[i].contains(".rbc")) { total++; } } 

Это может дать вам общее количество файлов с расширением «.rbc». Хотя это, возможно, не лучший и эффективный способ сделать это, он по-прежнему работает.

Для подсчета файлов вы можете попробовать этот код:

 # public static List getFiles(File aStartingDir) # { # List result = new ArrayList(); # # File[] filesAndDirs = aStartingDir.listFiles(); # List filesDirs = Arrays.asList(filesAndDirs); # Iterator filesIter = filesDirs.iterator(); # File file = null; # while ( filesIter.hasNext() ) { # file = (File)filesIter.next(); # result.add(file); //always add, even if directory # if (!file.isFile()) { # //must be a directory # //recursive call! # List deeperList = getFileListing(file); # result.addAll(deeperList); # } # # } # Collections.sort(result); # return result; # } 

Вы можете использовать параметр fileFilter для метода listFiles () для возврата файлов с расширением .rbc.

EDIT: Извините, пропустил один вопрос. Файлы будут размещены в вашем пакете приложений, который будет находиться в данных / данных. Их можно просмотреть в Проводнике файлов в Eclipse с режимом DDMS.