• Android学习总结——文件储存


    Android中文件存储的操作:

    1.Activity的openFileOutput()方法可以把数据输出到文件中
    2.创建的文件保存在/data/data/<package name>/files目录
    3.实现过程与在java中保存数据到文件中是一样的

    <!-- 在SD卡中创建与删除文件权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <!-- 向SD卡写入数据权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    public class MainActivity extends Activity{
        protected void onCreat(Bundle savedInstanceState){
            super.onCreat(savedInstanceState);
            setContentView(R.layout.activity_main);
            File file=new File("/mnt/sdcard/test"); //创建文件
            if(!file.exists()){ //判断文件是否存在
                try{
                    file.createNewFile(); //文件不存在就创建它
                }catch(IOException e){
                    e.printStackTrace();
                }
            }else{
                Toast.makeText(MainActivity.this,"文件已存在",1000).show();
            }
           //file.delete(); //删除文件
        }
    }

    1.目录结构。this.getFilesDir().当前程序默认的数据存储目录
    2.this.getCacheDir(),默认的缓存文件的存放位置,不太重要的创建使用,内存不足的时候,系统会自动删除app中cache目录的数据
    3.this.getDir("xch",MODE_PRIVATE);/data/data/<包名>/app_xch
    4.this.getExternalCacheDir(),外部的存储位置,app卸载后会自动删除。
    5.如果开发者不遵守不把数据放入data/data/<包名>或者/mnt/sdcard/Android/data/<包名>,卸载不会清除,会造成所谓的数据垃圾。

    Demo:

    package com.example.filereadwrite;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        private EditText content;
        private Button btn_SaveRead;
        private TextView tv;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            content=(EditText) findViewById(R.id.et);
            btn_SaveRead=(Button) findViewById(R.id.btn_SaveRead);
            tv=(TextView) findViewById(R.id.tv);
    
            btn_SaveRead.setOnClickListener(this);
        }
    
    
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.btn_SaveRead:
                    writeFile(content.getText().toString());
                    tv.setText(readFile());
                    break;
            }
        }
    
        /**
         * 将内容写入文件
         * @param content
         */
        public void writeFile(String content){
            try {
                FileOutputStream fos=openFileOutput("text.txt",MODE_PRIVATE);
                fos.write(content.getBytes());
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 将文件内容读出
         */
        public String readFile(){
            String content="";
            try {
                FileInputStream fis=openFileInput("text.txt");
                ByteArrayOutputStream baos=new ByteArrayOutputStream();//可以捕获内存缓冲区的数据,转换成字节数组
                int len=0;
                byte[] buffer=new byte[1024];
                while((len=fis.read(buffer))!=-1){
                    baos.write(buffer,0,len);
                }
                content=baos.toString();
                fis.close();
                baos.close();
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return content;
        }
    }

    注: FileOUtputStream fos= openOutoput(文件名,访问权限);
         fos.write(写入的二进制文件);

         byte [] buffer = new byte[1024];// 最多可存1024字节

         baos.write(buffer, 0, len);// 0表示偏移量为0

  • 相关阅读:
    Linux下暴力破解工具Hydra详解
    Github 安全类Repo收集整理
    Linux下显示IP地理位置信息的小工具-nali
    一次渗透小记
    一步随心,一生无悔
    巧遇"drwxr-xr-x."权限
    mysql以ROOT权限提权方法
    HTTP消息中header头部信息的讲解
    浏览器安全-初学篇
    高并发工具推荐
  • 原文地址:https://www.cnblogs.com/xch-yang/p/5889186.html
Copyright © 2020-2023  润新知