xml布局文件:
<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" android:background="#ffffff" tools:context="com.example.android_file.MainActivity" > <EditText android:id="@+id/edittext" android:layout_width="match_parent" android:layout_height="100dp" /> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="写入并读取出来"/> <TextView android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
Main1.java
package com.example.android_file; import java.io.File; import java.io.IOException; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //如果想要在文件里面写入数据,需要加入读写数据的权限,不加会报错 File file = new File("/mnt/sdcard/test");//安卓内置文件目录 if(!file.exists()){ try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ Toast.makeText(MainActivity.this, "创建失败,文件已经存在", Toast.LENGTH_SHORT).show(); } //删除文件 //file.delete(); File file1 = this.getFilesDir();//这个目录是当前应用程序默认的数据存储目录 Log.i("info", file1.toString()); File file2 = this.getCacheDir();//这个目录时当前应用程序默认的缓存文件的存放位置 //把一些不是非常重要的文件在此处创建 使用 //如果手机的内部不足的时候 系统会自动去删除APP的cache 目录的数据 Log.i("info", file2.toString()); // 获取/data/data/<包名>/example目录 File file3 = this.getDir("example", MODE_PRIVATE); Log.i("info", file3.toString()); //可以得到外部的存储位置,该位置的数据跟内置的使用是一样的,如果APP卸载了,该目录里面的数据也会自动清除 //但是,如果开发者不遵守规则,不将数据放入 data/data/<包名>或者 /mnt/sdcard/Android/data/<包名>中 //卸载之后,数据将不会自动清除掉 将会造成数据垃圾 //this.getExternalFilesDir(type); //this.getExternalCacheDir(); } }
main2.java
package com.example.android_file; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class SecondActivity extends Activity { private EditText editText; private TextView textView; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.edittext); textView = (TextView) findViewById(R.id.textview); button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override//点击按钮触发读文件内容与写文件内容的操作 public void onClick(View v) { // TODO Auto-generated method stub writeFile(editText.getText().toString()); textView.setText(readFiles()); } }); } public void writeFile(String content){ //文件权限: //当应用程序在安装时系统会分配给它一个userid,当该应用要去访问其他资源比如文件的时候就需要userid匹配,默认情况下,任何应用创建的文件都是私有的(位于/data/data/<package name>/files),其他程序无法访问 //如果想程序其他应用可以访问该内容,可以将模式改成MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE try { //创建一个文件写入内容,如果想将文件写入到内存卡,需要加入权限android:permission.WRITE.EXTERNAL_ATORAGE FileOutputStream fos = openFileOutput("user.txt", MODE_PRIVATE); fos.write(content.getBytes()); fos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String readFiles(){ String content = null; try { //读取内容 FileInputStream fis = openFileInput("user.txt"); ByteArrayOutputStream bos = new ByteArrayOutputStream();//内存流读取数据,并将数据由字节转成字符串 byte[] buf = new byte[1024*1024]; int len = 0; while((len = fis.read(buf))!=-1){ bos.write(buf, 0, len); } content = bos.toString(); fis.close(); bos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return content; } }
时间: 2024-11-06 07:42:06