Android中读取磁盘信息和权限问题

来源:互联网 发布:淘宝今年双十一销售额 编辑:程序博客网 时间:2024/04/30 00:11

1.获得磁盘信息:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView tvMemoryInfo = (TextView) findViewById(R.id.tv_memory_info);// 获得sd卡的内存状态File sdcardFileDir = Environment.getExternalStorageDirectory();String sdcardMemory = getMemoryInfo(sdcardFileDir);// 获得手机内部存储控件的状态File dataFileDir = Environment.getDataDirectory();String dataMemory = getMemoryInfo(dataFileDir);tvMemoryInfo.setText("SD卡: " + sdcardMemory + "\n手机内部: " + dataMemory);}/** * 根据路径获取内存状态 * @param path * @return */private String getMemoryInfo(File path) {// 获得一个磁盘状态对象        StatFs stat = new StatFs(path.getPath());                long blockSize = stat.getBlockSize();// 获得一个扇区的大小                long totalBlocks = stat.getBlockCount();// 获得扇区的总数                long availableBlocks = stat.getAvailableBlocks();// 获得可用的扇区数量                // 总空间        String totalMemory =  Formatter.formatFileSize(this, totalBlocks * blockSize);        // 可用空间        String availableMemory = Formatter.formatFileSize(this, availableBlocks * blockSize);return "总空间: " + totalMemory + "\n可用空间: " + availableMemory;}}





2.权限相关:

首先看看Android中的文件的权限相关信息:

                                        

后面:-rw-rw-rwx中,这是文件权限的表示,和Linux中文件权限表示相同的。

一共十个字符:第一个可以为d:表示文件夹     -:表示文件     l:表示快捷方式

2到10位分别表示:读写执 行

但是2-4:            5-7    8-10具体表示如下

       

一个关于权限小列子:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.read.MainActivity" >    <Button         android:id="@+id/btn_read_private"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="读私有文件"        />        <Button         android:id="@+id/btn_write_private"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="写私有文件"        />            <Button         android:id="@+id/btn_read_readable"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="读可读文件"        />    <Button         android:id="@+id/btn_write_readable"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="写可读文件"        />            <Button         android:id="@+id/btn_read_writeable"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="读可写文件"        />    <Button         android:id="@+id/btn_write_writeable"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="写可写文件"        />            <Button         android:id="@+id/btn_read_readable_writeable"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="读可读可写文件"        />    <Button         android:id="@+id/btn_write_readable_writeable"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="写可读可写文件"        />         </LinearLayout>




package com.example.read;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {private String basicPath="/data/data/com.example.quanxian/files/";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.btn_read_private).setOnClickListener(this);findViewById(R.id.btn_write_private).setOnClickListener(this);findViewById(R.id.btn_read_readable).setOnClickListener(this);findViewById(R.id.btn_write_readable).setOnClickListener(this);findViewById(R.id.btn_read_writeable).setOnClickListener(this);findViewById(R.id.btn_write_writeable).setOnClickListener(this);findViewById(R.id.btn_read_readable_writeable).setOnClickListener(this);findViewById(R.id.btn_write_readable_writeable).setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch(v.getId()){case R.id.btn_read_private:readFile("private.txt");break;case R.id.btn_write_private:writeFile("private.txt");break;case R.id.btn_read_readable:readFile("readable.txt");break;case R.id.btn_write_readable:writeFile("readable.txt");break;case R.id.btn_read_writeable:readFile("writeable.txt");break;case R.id.btn_write_writeable:writeFile("writeable.txt");break;case R.id.btn_read_readable_writeable:readFile("readable_writeable.txt");break;case R.id.btn_write_readable_writeable:writeFile("readable_writeable.txt");break;}}/* * 读文件 */private void readFile(String fileName){String path=basicPath+fileName;try {BufferedReader reader=new  BufferedReader(new InputStreamReader(new FileInputStream(path)));    String text=reader.readLine();    reader.close();Toast.makeText(this,"读取成功"+text,0).show();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();Toast.makeText(this, "读取失败", 0).show();}}private void writeFile(String fileName){String path=basicPath+fileName;try {FileOutputStream fos=new FileOutputStream(path);fos.write(("哈哈,被我黑了").getBytes());    fos.flush();    fos.close();    Toast.makeText(this, "写入成功", 0).show();} catch (Exception e) {    Toast.makeText(this, "写入失败", 0).show();// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}

根据这个列子需要了解权限及读写文件的操作。


具体设置权限的方法:利用shell命令

adb shell


cd /dada/data


cd 包名


ls


cd files
ls
ls -l  查看权限

-----------------------------------------------------------------------------最终是要进入到文件的目录,然后修改目录权限。
chmod  664  文件名

0 0
原创粉丝点击