arraylist - ( java/android ) 从 array 向文件列表添加大小过滤器

  显示原文与译文双语对照的内容
0 0

我有Android的脚本,列出了来自sdcard存储器的所有图像。 代码如下:

SkanerActivity.java

package com.click;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.google.common.base.Predicates;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Environment;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SkanerActivity extends Activity {
 private File root;
 private ArrayList<File> fileList = new ArrayList<File>();
 private LinearLayout view;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_skaner);
 view = (LinearLayout) findViewById(R.id.view);
//getting SDcard root path
 root = new File(Environment.getExternalStorageDirectory()
. getAbsolutePath());
 getfile(root);
 for (int i = 0; i <fileList.size(); i++) {
 TextView textView = new TextView(this);
 textView.setText(fileList.get(i).getName());
 textView.setPadding(5, 5, 5, 5);
 System.out.println(fileList.get(i).getName());
 if (fileList.get(i).isDirectory()) {
 textView.setTextColor(Color.parseColor("#FF0000"));
 }
 view.addView(textView);
 }
 }
 public ArrayList<File> getfile(File dir) {
 File listFile[] = dir.listFiles();
 if (listFile!= null && listFile.length> 0) {
 for (int i = 0; i <listFile.length; i++) {
 if (listFile[i].isDirectory()) {
 fileList.add(listFile[i]);
 getfile(listFile[i]);
 } else {
 if (listFile[i].getName().endsWith(".png")
 || listFile[i].getName().endsWith(".jpg")
 || listFile[i].getName().endsWith(".jpeg")
 || listFile[i].getName().endsWith(".gif"))
 {
 fileList.add(listFile[i]);
 }
 }
 }
 }
 return fileList;
 }
}

activity_skaner.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/scrollView"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"> 
 <LinearLayout
 android:id="@+id/view"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:padding="8dp"> 
 </LinearLayout>
</ScrollView>

我想过滤一个包含一个更多参数- 大小的文件的列表- 从 500 kb的结果文件中排除。 如何使用这里代码?

感谢你的帮助 !

时间:原作者:1个回答

0 0

你的dir.listFiles(); 返回 File 对象的array,( File[] ) 。

listFile[i] 是一个 File 对象。

listFile[i].length() 以字节为单位返回文件的大小。

500kb = 500 * 1024.

因此,我将像这样修改你的getfile 方法:

public ArrayList<File> getfile(File dir) {
 File listFile[] = dir.listFiles();
 if (listFile!= null && listFile.length> 0) {
 for (int i = 0; i <listFile.length; i++) {
 if (listFile[i].isDirectory()) {
 fileList.add(listFile[i]);
 getfile(listFile[i]);
 } else if (listFile[i].length()> = 500 * 1024) {
 if (listFile[i].getName().endsWith(".png")
 || listFile[i].getName().endsWith(".jpg")
 || listFile[i].getName().endsWith(".jpeg")
 || listFile[i].getName().endsWith(".gif"))
 {
 fileList.add(listFile[i]);
 }
 }
 }
 }
 return fileList;
}
原作者:
...