Android根据文件路径加载指定文件

原创 2017年01月03日 14:18:17

Android根据指定的文件路径加载指定文件格式(图片格式 png, gif,jpg jpeg)的文件相关信息的列表。

如图:

       

代码:

public class Util {
	
	/****
	 * 计算文件大小
	 * 
	 * @param length
	 * @return
	 */
	public static String ShowLongFileSzie(Long length) {
		if (length >= 1048576) {
			return (length / 1048576) + "MB";
		} else if (length >= 1024) {
			return (length / 1024) + "KB";
		} else if (length < 1024) {
			return length + "B";
		} else {
			return "0KB";
		}
	}
	
	/***
	 * 
	 * 更具路径得到该路径下的全部图片信息
	 * @return
	 */
	
	public static List<AddFileInfo> getSDPathFrom() {
        // 图片列表
        List<AddFileInfo> imagePathList = new ArrayList<AddFileInfo>();
        // 得到sd卡内image文件夹的路径 
        String filePath = Environment.getExternalStorageDirectory().toString() + File.separator+"BigNoxHD/cache/";
        //得到该路径文件夹下所有的文件
        File fileAll = new File(filePath);
        File[] files = fileAll.listFiles();
        // 将所有的文件存入ArrayList中,并过滤所有图片格式的文件
        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            if (checkIsFile(file.getPath())) {
            	String time = new SimpleDateFormat("yyyy-MM-dd")
				.format(new Date(file.lastModified()));
            	AddFileInfo info=new AddFileInfo(file.getName(), Util.ShowLongFileSzie(file.length()), time, file.getAbsolutePath());
                imagePathList.add(info);
            }
        }
        // 返回得到的图片列表
        return imagePathList;
    }

	/****
	 * 验证文件格式
	 * @param fName
	 * @return
	 */
	public static boolean checkIsFile(String fName) {
        boolean isImageFile = false;
        // 获取扩展名
        String FileEnd = fName.substring(fName.lastIndexOf(".") + 1,
                fName.length()).toLowerCase();
        if (FileEnd.equals("jpg") || FileEnd.equals("png") || FileEnd.equals("gif")|| FileEnd.equals("jpeg") ) {
            isImageFile = true;
        } else {
            isImageFile = false;
        }
        return isImageFile;
    }
	
	/****
	 * 根据文件路径获取图片
	 * 其中w和h你需要转换的大小
	 * @param path 
	 * @param w
	 * @param h
	 * @return
	 */
	public static Bitmap convertToBitmap(String path, int w, int h) {
		BitmapFactory.Options opts = new BitmapFactory.Options();
		// 设置为ture只获取图片大小
		opts.inJustDecodeBounds = true;
		opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
		// 返回为空
		BitmapFactory.decodeFile(path, opts);
		int width = opts.outWidth;
		int height = opts.outHeight;
		float scaleWidth = 0.f, scaleHeight = 0.f;
		if (width > w || height > h) {
			// 缩放
			scaleWidth = ((float) width) / w;
			scaleHeight = ((float) height) / h;
		}
		opts.inJustDecodeBounds = false;
		float scale = Math.max(scaleWidth, scaleHeight);
		opts.inSampleSize = (int)scale;
		WeakReference<Bitmap> weak = new WeakReference<Bitmap>(BitmapFactory.decodeFile(path, opts));
		return Bitmap.createScaledBitmap(weak.get(), w, h, true);
	}
}

MainActivity.java

public class MainActivity extends Activity {

	private ListView mListview;
	private List<AddFileInfo> list;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}

	private void initView() {
		// TODO Auto-generated method stub
		mListview = (ListView) findViewById(R.id.listview);
		list = Util.getSDPathFrom();
		mListview.setAdapter(new Adapter(MainActivity.this));
	}

	class Adapter extends BaseAdapter {
		private LayoutInflater inflater;
		private Context context;

		public Adapter(Context context) {
			this.context = context;
			this.inflater = LayoutInflater.from(context);
		}

		@Override
		public int getCount() {
			return list.size();
		}

		@Override
		public Object getItem(int position) {
			return list.get(position);
		}

		@Override
		public long getItemId(int position) {
			return 0;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder holder;
			if (null == convertView) {
				convertView = inflater.inflate(
						R.layout.item_mytask_file_listview, null);
				holder = new ViewHolder(convertView);
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}
			AddFileInfo info = (AddFileInfo) getItem(position);
			holder.img.setImageBitmap(Util.convertToBitmap(info.getPath(), 99, 99));
			holder.tv_name.setText("文件名称:" + info.getName());
			holder.size.setText("文件大小:" + info.getSize());
			holder.time.setText("文件创建时间:" + info.getTime());
			return convertView;
		}

	}

	class ViewHolder {

		private TextView tv_name;
		private TextView size;
		private TextView time;
		private ImageView img;

		public ViewHolder(View view) {
			img = (ImageView) view.findViewById(R.id.img);
			tv_name = (TextView) view.findViewById(R.id.item_file_name);
			size = (TextView) view.findViewById(R.id.item_file_size);
			time = (TextView) view.findViewById(R.id.item_file_time);
		}
	}
}
不要忘记在AndroidManifest.xml加权限哦!

 <!-- SD卡权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

源码点击下载



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

android 获取路径目录方法以及判断目录是否存在,创建目录

Environment 常用方法:  * 方法:getDataDirectory() 解释:返回 File ,获取 Android 数据目录。 * 方法:getDownloadCacheDi...

Android根据文件路径使用File类获取文件相关信息

Android通过文件路径如何得到文件相关信息,如 文件名称,文件大小,创建时间,文件的相对路径,文件的绝对路径等: 如图: 代码: public class MainActivity ex...

phpstorm中的数据库

phpstorm中如果右侧栏中没有database,则需要通过:View->ToolWindow->DataBase中打开。 在右侧栏中即显示DataBase。点击"+"->DataBase...

spring-boot 加载本地静态资源文件路径配置

1.spring boot默认加载文件的路径是  /META-INF/resources/  /resources/  /static/  /public/  这些目录下面, 当然我们也可以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)