I`m trying get list of files in folder and its subfolders with extension ".mp3" , but the function return .mp3 files only in root folder.
I`m need a structure look like this
http://s1.ipicture.ru/uploads/20130530/Kiju7Bf7.png The source code:
private ListView lvFolders;
private File file;
private List<String> myList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.folder, null);
lvFolders = (ListView) v.findViewById(R.id.lvFolders);
myList = new ArrayList<String>();
String root_sd = Environment.getExternalStorageDirectory().toString();
file = new File(root_sd);
addToSongs(file);
/*File list[] = file.listFiles();
for (int i = 0; i < list.length; i++) {
myList.add(list[i].getName());
}*/
lvFolders.setAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, myList));
lvFolders.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
File temp_file = new File(file, myList.get(position));
if (!temp_file.isFile()) {
file = new File(file, myList.get(position));
File list[] = file.listFiles();
myList.clear();
for (int i = 0; i < list.length; i++) {
myList.add(list[i].getName());
}
Toast.makeText(getActivity(), file.toString(),
Toast.LENGTH_LONG).show();
lvFolders.setAdapter(new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_list_item_1,
myList));
}
}
});
return v;
}
FilenameFilter textFilter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3"));
}
};
private void addToSongs(File home) {
for (File file : home.listFiles(textFilter)) {
if (file.isDirectory()) {
addToSongs(file);
} else {
myList.add(file.getAbsolutePath());
}
}
}
What i'm doing wrong?
Try this
import java.io.File;
public class ListFiles
{
public static void main(String[] args)
{
// Directory path here
String path = ".";
String files;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
files = listOfFiles[i].getName();
System.out.println(files);
}
}
}
}
For get all the files in a folder, if you want a specific extension of file use this
import java.io.File;
public class ListFiles
{
public static void main(String[] args)
{
// Directory path here
String path = ".";
String files;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
files = listOfFiles[i].getName();
if (files.endsWith(".txt") || files.endsWith(".TXT"))
{
System.out.println(files);
}
}
}
}
}
This code might help:
public static void main(String[] args)
{
File file = new File("C:/MyDirectory");
List<File> list = new ArrayList<File>();
getMp3Files(file, list);
// Use list which contains the files with .mp3 extension
}
public static void getMp3Files(File rootfile, List<File> list)
{
File[] files;
if(rootFile.isDirectory())
{
files = rootfile.listFiles();
}
else
return;
for (File file : files)
{
if(file.isDirectory())
{
getMp3Files(file, list);
}
else
{
if(file.getName().endsWith(".mp3"))
{
list.add(file);
}
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.