安卓Android,使用File类开发一个文件浏览器,用于查看SD卡中的文件信息。 注意:使用ListView控件来显示指定目录中的全部文件和文件夹。请生成完整代码
时间: 2024-11-13 07:24:07 浏览: 3
Android应用源码之GetSDTree(简单SD卡文件浏览器)-IT计算机-毕业设计.zip
在Android上,你可以使用`java.io.File`类配合`File.listFiles()`方法来遍历SD卡中的文件和文件夹,并结合`ListView`来创建一个简单的文件浏览器。以下是一个基础示例,展示如何使用`FragmentActivity`、`ListView`以及一个自定义的适配器来显示文件列表:
```java
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class FileBrowserFragment extends AppCompatActivity implements AdapterView.OnItemClickListener {
private ListView listView;
private ArrayAdapter<String> adapter;
private List<File> files = new ArrayList<>();
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file_browser);
// 获取ListView并设置监听事件
listView = findViewById(R.id.listView);
listView.setOnItemClickListener(this);
// 初始化文件列表
scanDirectory(new File(Environment.getExternalStorageDirectory(), ""));
}
private void scanDirectory(File directory) {
if (directory.isDirectory()) {
for (File file : directory.listFiles()) {
files.add(file.getName());
if (file.isDirectory())
scanDirectory(file);
}
} else {
files.add(directory.getName());
}
// 更新ListView
updateAdapter();
}
private void updateAdapter() {
adapter = new ArrayAdapter<>(this, R.layout.list_item, files);
listView.setAdapter(adapter);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
File file = files.get(position);
if (file.isDirectory()) {
Toast.makeText(this, "You clicked a folder: " + file.getName(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "You clicked a file: " + file.getName(), Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// 清理内存中的文件列表,防止内存泄漏
files.clear();
files = null;
}
// 相关问题:
阅读全文