Android开发之初级开发_保存数据之文件保存
在很多地方都会用到将用户的数据保存到SDcard中去。
今天介绍Android的第一种保存方式,File保存
布局文件:activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/user_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入姓名..." /> <EditText android:id="@+id/user_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword" android:hint="请输入密码..." /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <CheckBox android:id="@+id/checked" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="记住密码" /> <Button android:id="@+id/landing" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登陆"/> </RelativeLayout> </LinearLayout>
布局文件二:second.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登陆成功..." android:textSize="20sp" android:layout_marginTop="100dp" android:gravity="center_vertical|center_horizontal" /> </LinearLayout>
Mainactivity.java
import java.util.Map; import com.hql.savedatato.R; import com.hql.savedatatosdcard.loginservice.LoginService; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private EditText user_name, user_password; private CheckBox checked; private Button btn_loading; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); user_name = (EditText) findViewById(R.id.user_name); user_password = (EditText) findViewById(R.id.user_password); checked = (CheckBox) findViewById(R.id.checked); btn_loading = (Button) findViewById(R.id.landing); btn_loading.setOnClickListener(new MyListener()); Map<String, String> map = LoginService.getuserinfo(MainActivity.this); if (map != null) { user_name.setText(map.get("username")); user_password.setText(map.get("password")); } if (map == null) { Toast.makeText(this, "map为空", Toast.LENGTH_SHORT).show(); } } private class MyListener implements OnClickListener { @Override public void onClick(View v) { String name = user_name.getText().toString().trim(); String password = user_password.getText().toString().trim(); if (TextUtils.isEmpty(name) || TextUtils.isEmpty(password)) { Toast.makeText(MainActivity.this, "请核对你的登陆信息...", Toast.LENGTH_SHORT).show(); } if (checked.isChecked()) { boolean result = LoginService.saveInfo(MainActivity.this, name, password); if (result) { Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_SHORT).show(); } if (name.equals("loneliness") || password.equals("123456789")) { Intent intent = new Intent(); intent.setClass(MainActivity.this, Second.class); startActivity(intent); } } } } }
Second.java
import com.hql.savedatato.R; import android.app.Activity; import android.os.Bundle; public class Second extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.second); } }
LoginService.java
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import android.content.Context; public class LoginService { /** * 使用File保存用户的账号和密码 * * @param username * 账号 * @param passwrod * 密码 * @return */ public static boolean saveInfo(Context context, String username, String passwrod) { try { File file = new File("/storage/sdcard0/info.txt"); FileOutputStream fos = new FileOutputStream(file); fos.write((username + "##" + passwrod).getBytes()); fos.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 获取保存到SDcard中的数据 * * @param context * @return */ public static Map<String, String> getuserinfo(Context context) { File file = new File("/storage/sdcard0/info.txt"); try { FileInputStream fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); String str = br.readLine(); String[] infos = str.split("##"); Map<String, String> map = new HashMap<String, String>(); map.put("username", infos[0]); map.put("password", infos[1]); br.close(); return map; } catch (Exception e) { e.printStackTrace(); return null; } } }
添加读写SD卡权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
注意: fos.write((username+"**"+passwrod).getBytes());中“**”是为了将账号和密码区别开

浙公网安备 33010602011771号