zoukankan      html  css  js  c++  java
  • Android Saving Data(二)

            Saving File

    android读写文件的形式和普通的java IO的方式并没有什么不同,唯一有所限制的是当我们创建文件的时候不能够在像javaSE那样随意了。一般android读写文件有两种形式:

    1 File file = new File(context.getFilesDir(), filename);

    2 FileOutputStream outputStream = openFileOutput(filename, Context.MODE_PRIVATE);

    强烈推荐使用第一种方式,因为在第一种方式的情况下我们可以使用许多高级点的文件读写方法,这样不说能提高效率,但是能够减少错误概率。

    代码:

    public class MainActivity extends Activity {
        TextView view;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fragment_layout);
            view=(TextView) findViewById(R.id.textView1);
            Button write=(Button) findViewById(R.id.button1);
            write.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    view.setText(getFilesDir().toString());
                    String filename = "myfile";
                    String string = "Hello world!";
                    FileOutputStream outputStream;
    
                    try {
                      outputStream = openFileOutput(filename, Context.MODE_APPEND);
                      PrintWriter pw=new PrintWriter(outputStream);
                      pw.println(string);
                      pw.close();
                      if(outputStream!=null)outputStream.close();
                    } catch (Exception e) {
                      e.printStackTrace();
                    }
                    
                }
            });
            Button read=(Button) findViewById(R.id.button2);
            read.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    
                    String filename="myfile";
                    try {
                        BufferedReader reader=new BufferedReader(new FileReader(new File(getFilesDir(), filename)));
                        String res="";
                        res=reader.readLine();
                        view.setText(res);
                        reader.close();
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
        }
    }
    View Code

    注意:android中内存和外存的读写没有什么不同,内存获取目录使用getFileDir(),而外存用:getExternalStoragePublicDirectory()用于在外存公共部分保存文件

    getExternalFilesDir()用于保存个人文件的时候使用。

    此外:

    getExternalStorageState() 查询外部存储状态;

    getFreeSpace()getTotalSpace()查出是否有足够的可用空间;

    getCacheDir() 定期创建的所有缓存文件。

  • 相关阅读:
    关于CQRS(老外经典好文)
    关于Autofac的使用陷阱
    文件写入文件分布式系统(asp.net C#)
    NET Framework 4.5.2
    asp.net开源
    关于委托:异常{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }
    sql SELECT时的with(nolock)选项说明
    树形结构的数据库表Schema设计
    C#操作符??和?:
    Byte[]和BASE64之间的转换
  • 原文地址:https://www.cnblogs.com/lichao-normal/p/6158211.html
Copyright © 2011-2022 走看看