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;
            
        }
    }
  • 相关阅读:
    R语言:提取路径中的文件名字符串(basename函数)
    课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 0、学习目标
    numpy.squeeze()的用法
    课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)—— 4、Logistic Regression with a Neural Network mindset
    Python numpy 中 keepdims 的含义
    课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)—— 3、Python Basics with numpy (optional)
    课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)—— 2、编程作业常见问题与答案(Programming Assignment FAQ)
    课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)—— 0、学习目标
    课程一(Neural Networks and Deep Learning),第一周(Introduction to Deep Learning)—— 0、学习目标
    windows系统numpy的下载与安装教程
  • 原文地址:https://www.cnblogs.com/fangg/p/5723166.html
Copyright © 2011-2022 走看看