• 实例教程三:文件的保存与读取


    使用代码嵌入android.os.SystemProperties的方法(转)
    http://www.eoeandroid.com/thread-206961-1-1.html

    Android网络连接处理方法
    http://www.eoeandroid.com/thread-206925-1-1.html

    IReader书架效果的实现想法,唯一的问题是对美工的技能要...
    http://www.eoeandroid.com/thread-206909-1-1.html

    布局文件:  

    <?xml version="1.0" encoding="utf-8"?>
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="vertical" >
     
        <TextView
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="@string/fileName" />
         
        <EditText 
            android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:id="@+id/edtFileName"/>
         
        <TextView
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="@string/fileContent" />
         
        <EditText 
            android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:id="@+id/edtFileContent"
             android:minLines="3"/>
         
        <Button 
            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/btnSave"
             android:text="@string/fileSave"/>
     
    </LinearLayout>
     
    <?xml version="1.0" encoding="utf-8"?>
     <resources>
     
        <string name="hello">Hello World, MainActivity!</string>
         <string name="app_name">文件操作</string>
         <string name="fileName">文件名称</string>
         <string name="fileContent">文件内容</string>
         <string name="fileSave">保存</string>
         <string name="success">保存完成</string>
         <string name="fail">保存失败</string>
     
    </resources>
    package cn.itcast.files;
     
    
    import cn.itcast.service.FileService; 
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.Toast;
     
    
    public class MainActivity extends Activity implements OnClickListener{
     
            private EditText edtFileName; 
            private EditText edtFileContent; 
            private Button btnSave;
    
            @Override
     
            public void onCreate(Bundle savedInstanceState) {
     
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.main);
                    initView();
            }
     
           private void initView(){
     
                   edtFileName = (EditText)this.findViewById(R.id.edtFileName);
                     edtFileContent = (EditText)this.findViewById(R.id.edtFileContent);
                     btnSave = (Button)this.findViewById(R.id.btnSave);    
                    btnSave.setOnClickListener(this);
     
            }
            @Override
     
            public void onClick(View v) {
     
                    switch(v.getId()){
     
                    case R.id.btnSave:
     
                            String fileName = edtFileName.getText().toString();
                            String fileContent = edtFileContent.getText().toString();
     
                            FileService service = new FileService(this);
                            try {
     
                                    service.save(fileName, fileContent);
                                    Toast.makeText(getApplicationContext(), R.string.success, 1).show();
     
                            } catch (Exception e) {
                                    Toast.makeText(getApplicationContext(), R.string.fail, 1).show();
                                    e.printStackTrace();
                            }
     
                            break;
                    default:
                            break;
                     }
            }
     }
    package cn.itcast.service;
     
    
    import java.io.ByteArrayOutputStream;
     
    import java.io.FileInputStream;
     
    import java.io.FileOutputStream;
     
    
    import android.content.Context;
     
    
    
    public class FileService {
     
            private Context context;
     
            
            public FileService(Context context){
     
                    this.context = context;
     
            }
     
    
            /**
     
             * 保存文件
     
             * @param fileName 文件名称
     
             * @param fileContent 文件内容
     
             */
     
            public void save(String fileName, String fileContent) throws Exception{
     
                    //IO j2se
     
                    
                    //Context.MODE_PRIVATE --私有操作模式:创建出来的文件只能被本应用访问,其它应用无法访问该文件
     
                    //另外采用私有操作模式创建的文件,写入文件中的内容会覆盖原文件内容
     
                    //如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND
     
                    FileOutputStream outStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
     
                    outStream.write(fileContent.getBytes());
     
                    outStream.close();
     
            }
     
            
            /**
     
             * 读取文件内容
     
             * @param fileName 文件名称
     
             * @return 文件内容
     
             * @throws Exception
     
             */
     
            public String read(String fileName) throws Exception{
     
                    FileInputStream inStream = context.openFileInput(fileName);
     
                    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
     
                    byte[] buffer = new byte[1024];
     
                    //防止数据量过大,超过了1024
     
                    int len = 0;
     
                    while((len = inStream.read(buffer)) != -1){
     
                            //防止每次读取覆盖前一次数据
     
                            outStream.write(buffer, 0, len);
     
                    }
     
                    
                    byte[] data = outStream.toByteArray();
     
                    
                    return new String(data);
     
            }
     
            
            //Context.MODE_APPEND --模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
     
            //Context.MODE_WORLD_READABLE和Context.Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件
     
            //MODE_WORLD_READABLE: 表示当前文件可以被其它应用读取
     
            //MODE_WORLD_WRITEABLE: 表示当前文件可以被其它应用写入
     
            //如果希望文件被其他应用读和写,可以传入:
     
            //openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + 
            //                        Context.Context.MODE_WORLD_WRITEABLE);
     
            
            
            //android有一套自己的安全模式,当应用程序(.apk)在安装时系统就会分配给他一个userId
     
            //当该应用要去访问其它资源比如文件的时候,就需要userId匹配,默认情况下,任何应用创建的文件,
     
            //sharePerferences,数据库都应该是私有的(位于/data/data/<package name>/files),
     
            //其它程序无法访问,除非在创建时指定了Context.MODE_WORLD_READABLE或者
     
            //Context.Context.MODE_WORLD_WRITEABLE,只有这样其它程序才能正确访问
     
    }
     

    单元测试:

    package cn.itcast.test;
     
    
    import cn.itcast.service.FileService;
     
    import android.test.AndroidTestCase;
     
    import android.util.Log;
     
    
    public class FileServiceTest extends AndroidTestCase{
     
            private static final String TAG = "FileServiceTest";
     
            
            public void testRead() throws Throwable{
     
                    FileService service = new FileService(this.getContext());
     
                    String result = service.read("itcast.txt");
     
                    Log.i(TAG, result);
     
            }
     
    }
     
  • 相关阅读:
    AS3加载文件时的异常捕获
    经典语句
    南阳ACM 题目71:独木舟上的旅行 Java版
    南阳ACM 题目71:独木舟上的旅行 Java版
    南阳ACM 题目275:队花的烦恼一 Java版
    南阳ACM 题目275:队花的烦恼一 Java版
    仿微信中加载网页时带线行进度条的WebView的实现
    仿微信中加载网页时带线行进度条的WebView的实现
    Android实现自动定位城市并获取天气信息
    Android实现自动定位城市并获取天气信息
  • 原文地址:https://www.cnblogs.com/vus520/p/2725705.html
Copyright © 2020-2023  润新知