zoukankan      html  css  js  c++  java
  • 文件存储之内部存储和外部存储

    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;
            
        }
    }
  • 相关阅读:
    模拟+bfs——cf1344D
    【留坑】模拟+极角排序+预处理——ICPC PNWRC 2019 H
    【好题】思维+几何+离散化——ICPC PNWRC 2019 G
    【难】组合数学+dp——ICPC PNWRC 2019
    【好题】导数+统计贡献+扫描—— icpc PNWRC 2019
    【模板】二分图匹配+构造+最大独立集——icpc PNWRC 2019
    [Scoi2014]方伯伯的OJ(动态开点splay)
    [ZJOI2006]书架(二分+树状数组)
    [TJOI2017]不勤劳的图书管理员(分块+树状数组)
    [APIO2016]Gap(交互)
  • 原文地址:https://www.cnblogs.com/fangg/p/5723166.html
Copyright © 2011-2022 走看看