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

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

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






写数据_相关:



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 {@Overrideprotected 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/";@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);}/** * 哪一个空间被点击,V对象就代表被点击的对象 * */@Overridepublic 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位都有读写权限


更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Android开发经验谈之应用间数据共享
  3. [Android(安卓)SQLite]数据存储与访问 - 外部存储
  4. android 客户端数据传递之一:Web Service 代码
  5. 《Android(安卓)Activity》活动的介绍和创建
  6. 数据储存方式-SharedPreferences
  7. Android(安卓)SharedPreference 源码分析(一)
  8. android jni 包裹文件(jni wrapper) 以 speex 库为例
  9. Mobile Services批量提交数据

随机推荐

  1. 如何编写高效的android代码(1)
  2. android:layout_gravity="bottom"不起作
  3. android mediaStore
  4. 赵雅智_AndroidManifest.xml配置文件详解
  5. android中的短信操作
  6. android animation的学习之路
  7. could not find wglGetExtensionsStringA
  8. 第五章 Android(安卓)Scroll 分析
  9. android xml界面布局常用属性概括
  10. android(安卓) SDK 环境变量配置