文档章节

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

切切歆语
 切切歆语
发布于 2016/12/30 17:27
字数 420
阅读 374
收藏 0

Android通过文件路径如何得到文件相关信息,如 文件名称,文件大小,创建时间,文件的相对路径,文件的绝对路径等。

如图:

 

public class MainActivity extends Activity {

	private String path = "/storage/emulated/0/Android/data/cn.wps.moffice_eng/mm.doc";
	private TextView mTextView;

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

	@SuppressLint("SimpleDateFormat")
	private void initView() {
		// TODO Auto-generated method stub
		mTextView = (TextView) findViewById(R.id.textview);
		File f = new File(path);
		if (f.exists()) {
			FileInputStream fis = null;
			try {
				fis = new FileInputStream(f);
				String time = new SimpleDateFormat("yyyy-MM-dd")
						.format(new Date(f.lastModified()));
				System.out.println("文件文件创建时间" + time);
				System.out.println("文件大小:" + ShowLongFileSzie(f.length()));// 计算文件大小
																			// B,KB,MB,
				System.out.println("文件大小:" + fis.available() + "B");
				System.out.println("文件名称:" + f.getName());
				System.out.println("文件是否存在:" + f.exists());
				System.out.println("文件的相对路径:" + f.getPath());
				System.out.println("文件的绝对路径:" + f.getAbsolutePath());
				System.out.println("文件可以读取:" + f.canRead());
				System.out.println("文件可以写入:" + f.canWrite());
				System.out.println("文件上级路径:" + f.getParent());
				System.out.println("文件大小:" + f.length() + "B");
				System.out.println("文件最后修改时间:" + new Date(f.lastModified()));
				System.out.println("是否是文件类型:" + f.isFile());
				System.out.println("是否是文件夹类型:" + f.isDirectory());
				mTextView.setText("文件文件创建时间:" + time + "\n" + "文件大小:"
						+ ShowLongFileSzie(f.length()) + "\n" + "文件名称:"
						+ f.getName() + "\n" + "文件是否存在:" + f.exists() + "\n"
						+ "文件的相对路径:" + f.getPath() + "\n" + "文件的绝对路径:"
						+ f.getAbsolutePath() + "\n" + "文件可以写入:" + f.canWrite()
						+ "\n" + "是否是文件夹类型:" + f.isDirectory());
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	/****
	 * 计算文件大小
	 * 
	 * @param length
	 * @return
	 */
	public 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";
		}
	}

}

不要忘记在AndroidManifest.xml加权限哦!

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

 

源码点击下载:https://github.com/DickyQie/android-file

© 著作权归作者所有

切切歆语
粉丝 21
博文 345
码字总数 235421
作品 0
杭州
程序员
私信 提问
Android包管理机制(一)PackageInstaller的初始化

前言 包管理机制是Android中的重要机制,是应用开发和系统开发需要掌握的知识点之一。 包指的是Apk、jar和so文件等等,它们被加载到Android内存中,由一个包转变成可执行的代码,这就需要一个...

刘望舒
2018/06/19
0
0
android应用把文件存放在SDCard

1、在程序中访问SDCard,你需要申请访问SDCard的权限 在AndroidManifest.xml中加入访问SDCard的权限如下: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schem......

罗荣熙
2012/11/08
231
0
Android 的数据存储方式

Android 提供了5种方式存储数据: --使用SharedPreferences存储数据; --文件存储数据; --SQLite数据库存储数据; --使用ContentProvider存储数据; --网络存储数据; 先说下,Preference,...

等待流星
2014/03/13
149
0
android读写assets目录下面的资源文件(文件夹)

Android除了提供/res目录存放资源文件外,在/assets目录也会提供存放资源文件,在/assets目录下面不会在R.java里面自动生成ID,所以读取assets目录下面的资源文件需要提供路径,我们可以通过...

zhoulc
2013/03/30
55.1K
0
程序员:怎样释放你的Android手机存储空间

Android应用在运行之中会产生一些数据,比如图片的缓存,数据库文件,配置文件等等。我们开发时可能会有这样的一个需求清除应用内缓存的数据,可以让用户选择删除应用内产生的数据,这也是比...

极客人
2017/02/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

让《强化学习(第2版)》架起一座通往强化学习经典知识宝库的桥梁

上交大计算科学与工程系俞凯教授,5分钟口述讲解,带你快速认识了解年度重磅图书《强化学习(第二版)》! 在 AlphaGo战胜李世石之后,AlphaZero以其完全凭借自我学习超越人类在各种棋类游戏...

博文视点Bv
17分钟前
5
0
TLA7-EVM开发板的处理器、NOR FLASH、DDR3

TLA7-EVM开发板是一款由广州创龙基于Xilinx Artix-7系列FPGA自主研发的核心板+底板方式的开发板,可快速评估FPGA性能。核心板尺寸仅70mm*50mm,底板采用沉金无铅工艺的6层板设计,专业的PCB...

Tronlong创龙
26分钟前
4
0
UUID的变种-有序

为了解决UUID无序的问题,NHibernate在其主键生成方式中提供了Comb算法(combined guid/timestamp)。保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)。 /// <summary> //...

Canaan_
27分钟前
4
0
Netty学习(6)——通道间数据传输

1. FileChannel实现通道间的数据传输 在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel传输到另外一个channel。 transferFrom() FileChannel的transferF...

江左煤郎
30分钟前
3
0
AngularDOM操作

gtandsn
31分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部