zoukankan      html  css  js  c++  java
  • android数据存储之File

    android中使用File进行存储主要使用到OpenFileOutput和OpenFileInput两个方法,下面直接用一个例子来说明一下。

    (1)布局文件main.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        
        <TableRow >
            <TextView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="文件名:"
                android:textSize="20sp"/>
            <EditText 
                android:id="@+id/name"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:text=""
                />
        </TableRow>
         <TableRow >
            <TextView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="内容:"
                android:textSize="20sp"/>
            <EditText 
                android:id="@+id/content"
                android:layout_width="200dp"
                android:layout_height="100dp"
                android:text=""
                />
        </TableRow>
        
         <Button 
             android:id="@+id/save"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="保存"
             android:textSize="20sp"
             />
         <Button 
             android:id="@+id/read"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="读取"
             android:textSize="20sp"
             />
         <!-- 用于显示存储在File中的数据 -->
        <TextView 
            android:id="@+id/result"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text=""
            android:textSize="20sp"/>
    
    </TableLayout>

    (2)service方法

    package com.yby.file;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class FileService {
    
        //文件的保存
        public void save(OutputStream outstream,String content) throws IOException{
            outstream.write(content.getBytes());
            outstream.close();
        }
        
        //文件的读取
        public String read(InputStream inputstream) throws IOException{
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len ;
            while((len=inputstream.read(buffer))!=-1){
                baos.write(buffer,0,len);
            }
            byte[] data = baos.toByteArray();
            baos.close();
            inputstream.close();
            return new String(data);
        }
    }

    (3)activity代码实现

    package com.yby.file;
    
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity  extends Activity{
    
        private EditText name,content;
        private Button save,read;
        private TextView result;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            name = (EditText) findViewById(R.id.name);
            content = (EditText) findViewById(R.id.content);
            save = (Button) findViewById(R.id.save);
            read = (Button) findViewById(R.id.read);
            result = (TextView) findViewById(R.id.result);
            save.setOnClickListener(listener);
            read.setOnClickListener(listener);
        }
        
        
        private OnClickListener listener = new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                switch (v.getId()) {
                case R.id.save:
                    try {
                        // Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
                        // Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
                        // Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
                        // MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
                        // 如果希望文件被其他应用读和写,可以传入:
                        // openFileOutput("output.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
                        OutputStream outstream =  MainActivity.this.openFileOutput(name.getText().toString(), Context.MODE_APPEND);
                        FileService service = new FileService();
                        service.save(outstream, content.getText().toString());
                        Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    break;
                case R.id.read:
                    try {
                        InputStream instream =  MainActivity.this.openFileInput(name.getText().toString());
                        FileService service = new FileService();
                        String str = service.read(instream);
                        result.setText(str);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    break;
                default:
                    break;
                }
            }
        };
    }

    (4)使用shell命令查看写入的文件内容

  • 相关阅读:
    [BZOJ3997][TJOI2015]组合数学(Dilworth定理+DP)
    [BZOJ4000][TJOI2015]棋盘(状压DP+矩阵快速幂)
    BZOJ2462[Beijing2011]矩阵模板(二维Hash)
    [BZOJ2458][BeiJing2011]最小三角形(分治)
    [HDU5354]Bipartite Graph(CDQ分治+并查集)
    [NOIP2017]时间复杂度(模拟)
    [Luogu2540][NOIP2016]斗地主增强版(搜索+DP)
    [Luogu1979][NOIP2013]华容道(BFS+SPFA)
    WQS二分题集
    [CC-XXOR]Chef and Easy Problem
  • 原文地址:https://www.cnblogs.com/yby-blogs/p/4374187.html
Copyright © 2011-2022 走看看