android下的读写权限



建立两个项目,一个是写数据_相关,一个是读数据_相关数据 ,

写数据_相关 作用:建立,私有文件,可读文件,可读文件,可读可写文件

                       读数据_相关数据作用:对上面的项目的文件进行读写操作,看看是否能成功






写数据_相关:



package com.sqf.writedata;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//写数据
		
		//私有文件
		writeToLocal("private.txt",Context.MODE_PRIVATE);
		
		//可读文件
		writeToLocal("readable.txt", Context.MODE_WORLD_READABLE);
		
		//可写文件
		writeToLocal("writeable.txt", Context.MODE_WORLD_WRITEABLE);
		
		//可读可写文件.
		writeToLocal("readable_writeable.txt", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
		
		
	}
	
	private void writeToLocal(String fileName,int mode){
		 
		try {
				//	/data/data/包名/files/ 
			    //第一个参数是data/data/包名/files/下的文件名,di二是参数是权限
			FileOutputStream fos = openFileOutput(fileName, mode);
			fos.write(("第一个程序写的数据"+fileName).getBytes());
			fos.flush();
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
 
}



读数据_相关数据:


package com.sqf.write;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;

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.sqf.writedata/files/";
	
	
	
	@Override
	protected 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);
		
	}

	/**
	 * 哪一个空间被点击,V对象就代表被点击的对象
	 * */
	@Override
	public void onClick(View v) {
	
		switch(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){
		
		try {
			String path = basicPath + fileName;
			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
			String text = reader.readLine();
			reader.close();
			
			Toast.makeText(this, "读取成功", 0).show();
		} catch (Exception e) {
			Toast.makeText(this, "读取失败"+fileName, 0).show();
			e.printStackTrace();
		}
	}
	
	
	private void writeFile(String fileName){
		
		try {
			String path = basicPath + fileName;
			
			FileOutputStream fos = new FileOutputStream(path);
			fos.write("哈哈,被别人黑了".getBytes());
			fos.flush();
			fos.close();
			
			Toast.makeText(this, "写入成功"+fileName, 0).show();
		} catch (Exception e) {
			e.printStackTrace();
			Toast.makeText(this, "写入失败", 0).show();
		}
	}

 
}


<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" >
    
    <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>





重点:

    利用chmod去修改权限



#ls -l  显示权限





666---把2--10看成二进制,r,w代表为1, 666代表2-4位,5-7位,8-10位都有读写权限

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值