API内部文件读取

直接上代码吧

尝试将项目复制后建一个新的项目,结果总是有问题,不过可以把原项目转换为新项目,方法如下:

1.项目右键在android tools 有个 rename application package选项,这是改包名的,改完这个就是两个不同的应用

2.要想两个工程共存在Eclipse下的话,就还要选中项目 按F2 就可以改 项目的名字。

 

主要解决在上一个文档中,路径data/data/com.swust.intern这个不能写错的问题,所以直接使用谷歌提供的API获取环境变量,防止读错。

 getFilesDir(),返回一个文件路径:

data/data/com.swust.ApiIntern/files路径

修改前:

    File file =new File("data/data/com.swust.intern/info.txt");

修改后:
    File file =new File(getFilesDir(),"info.txt");

这样在data/data/com.swust.ApiIntern/files(多个文件夹)下便有了info.txt

代码:

package com.swust.intern;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import com.swust.APIintern.R;

public class MainActivity extends Activity {

    private EditText et_name;
    private EditText et_pwd;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //已经是全局变量,应用启动时获取ID
        et_name = (EditText) findViewById(R.id.et_name);
        et_pwd = (EditText) findViewById(R.id.et_pwd);
        
        //应用启动后,读取存档的用户名和密码
        readAccount();
    }
    public void readAccount(){
        //File file =new File("data/data/com.swust.intern/info.txt");
        File file =new File(getFilesDir(),"info.txt");
        //判读文件是否存在
        if(file.exists()){
            try{
                FileInputStream fis =new FileInputStream(file);
                //把字节流转化为字符流
                BufferedReader br =new BufferedReader(new InputStreamReader(fis));
                //读取txt文件的用户名和密码
                //读取一行
                String text =br.readLine();
                //使用“##”标识切割,得到字符串数组
                String[] s = text.split("##");
                
                
                et_name.setText(s[0]);
                et_pwd.setText(s[1]);
                
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        
    }
    public void login(View v){
        
        CheckBox cb      = (CheckBox)findViewById(R.id.cb);
        String name=et_name.getText().toString();
        String pwd =et_pwd.getText().toString();
        //判读复选框是否被勾选
        if(cb.isChecked()){
        //"data/data/com.swust.intern"是内部存储空间路径
        //File file =new File("data/data/com.swust.intern/info.txt");
            File file =new File(getFilesDir(),"info.txt");
            FileOutputStream fos;
            try{
                fos = new FileOutputStream(file);
                //加“##”是为了读取时好分割
                fos.write((name + "##" +pwd).getBytes());
                fos.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        //System.out.println("登陆成功");
        //创建吐司对话框
        /* 第一个参数上context,而activity本来就是context的子类,所以直接填this*/
        /*第三个参数为持续显示时间,只有LENGTH_SHORT(2S)和LENGTH_LONG(5s)两种选择*/
        /*Toast t= Toast.makeText(this, "登陆成功", Toast.LENGTH_SHORT);
        //显示吐司对话框
        t.show();*/
        
        Toast.makeText(this, "登陆成功", Toast.LENGTH_SHORT).show();
    }
}

 

posted @ 2015-10-14 12:15  平常心,平常心  阅读(319)  评论(0编辑  收藏  举报