Android——数据存储(四种方式之二)读写SD卡——练习

1保存到SDK  ——字符串方式

<span style="font-size:18px;"><strong>package com.example.jreduch08.SDK;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

import com.example.jreduch08.R;

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

public class SdActivity extends AppCompatActivity {
private CheckBox c1,c2,c3,c4,c5,c6;
    private Button bt0, bt1,bt2;
    private TextView tv3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.setting);
        getSupportActionBar().hide();

        c1= (CheckBox) findViewById(R.id.c1);
        c2= (CheckBox) findViewById(R.id.c2);
        c3= (CheckBox) findViewById(R.id.c3);
        c4= (CheckBox) findViewById(R.id.c4);
        c5= (CheckBox) findViewById(R.id.c5);
        c6= (CheckBox) findViewById(R.id.c6);

        bt0= (Button) findViewById(R.id.bt0);
        bt1= (Button) findViewById(R.id.bt1);
        bt2= (Button) findViewById(R.id.bt2);
        tv3= (TextView) findViewById(R.id.tv3);

        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder builder=new AlertDialog.Builder(SdActivity.this);
                builder.setTitle("字体大小请选择");
                builder.setIcon(R.mipmap.ic_launcher);
                final String[] items={"大","中","小"};
                // builder.setMultiChoiceItems()多选
                builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int i) {
                        Toast.makeText(getBaseContext(), items[i].toString(), Toast.LENGTH_SHORT).show();
                        tv3.setText(items[i].toString());
                        dialog.dismiss();
                    }
                });
                builder.setCancelable(false);
                AlertDialog alertDialog=builder.create();
                alertDialog.show();
            }
        });

        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                saveFile();
            }
        });
        bt0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent=new Intent(SdActivity.this,ShowActivity.class);
                startActivity(intent);

            }
        });

    }

    //保存文件到SD卡
    public  void saveFile(){
        FileOutputStream fos=null;

        //获取SD卡状态
        String state= Environment.getExternalStorageState();
        //判断SD卡是否就绪
        if(!state.equals(Environment.MEDIA_MOUNTED)){
            Toast.makeText(this,"请检查SD卡",Toast.LENGTH_SHORT).show();
            return;
        }
        //取得SD卡根目录
        File file= Environment.getExternalStorageDirectory();

        try {
            Log.d("=====SD卡根目录:",file.getCanonicalPath().toString());
//            File myFile=new File(file.getCanonicalPath()+"/sd.txt");
//            fos=new FileOutputStream(myFile);
            //输出流的构造参数1可以是 File对象  也可以是文件路径
            //输出流的构造参数2:默认为False=>覆盖内容;ture=》追加内容
            //追加  ,ture
            fos=new FileOutputStream(file.getCanonicalPath()+"/sd.txt");
            String  str="列表是否显示摘要:"+c1.isChecked()+":字体大小:"+tv3.getText().toString()
                    +":推送通知:"+c2.isChecked()+":互动插件:"+c3.isChecked()
                    +":自动优化阅读:"+c4.isChecked()+":收藏时转发:"+c5.isChecked()
                    +":顶踩时转发:"+c6.isChecked();
            fos.write(str.getBytes());
            Toast.makeText(this,"保存成功",Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fos!=null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Override
    protected void onStart() {
        super.onStart();
        String str=readFile();
        String  str1[]=str.split(":");
         c1.setChecked(Boolean.parseBoolean(str1[1]));
        c2.setChecked(Boolean.parseBoolean(str1[5]));
        c3.setChecked(Boolean.parseBoolean(str1[7]));
        c4.setChecked(Boolean.parseBoolean(str1[9]));
        c5.setChecked(Boolean.parseBoolean(str1[11]));
        c6.setChecked(Boolean.parseBoolean(str1[13]));
    }
    //从SD卡读取文件
    public String  readFile(){

        BufferedReader reader=null;

        FileInputStream fis=null;
        StringBuilder sbd=new StringBuilder();

        String statu= Environment.getExternalStorageState();
        if (!statu.equals(Environment.MEDIA_MOUNTED)){

            Toast.makeText(this,"SD卡未就绪",Toast.LENGTH_SHORT).show();
            return  "";
        }
        File root=Environment.getExternalStorageDirectory();
        try {
            fis=new FileInputStream(root+"/sd.txt");
            reader= new BufferedReader(new InputStreamReader(fis));
            String row="";
            try {
                while ((row=reader.readLine())!=null){

                    sbd.append(row);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (FileNotFoundException e) {
            Toast.makeText(this,"文件不存在",Toast.LENGTH_SHORT).show();

            e.printStackTrace();
        }finally {
            if (reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return  sbd.toString();
    }

}
</strong></span>
<span style="font-size:18px;"><strong><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal"

    >
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="读取"
        android:id="@+id/bt0"
        android:background="#feffff"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="设置"
        android:textSize="30sp"
        android:layout_marginLeft="80dp"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="意见反馈"
        android:id="@+id/bt1"
        android:background="#feffff"
        android:layout_marginLeft="50dp"
        />
</LinearLayout>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"></LinearLayout>

    <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="列表显示摘要"
                android:textSize="25sp"

                />
            <CheckBox
                android:id="@+id/c1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25sp"
                android:layout_marginLeft="150dp"
                />
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            >
            <TextView
            android:id="@+id/tv2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="字体大小"
            android:textSize="25sp"
            />
            <TextView
                android:id="@+id/tv3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="中"
                android:textSize="25sp"
                android:layout_marginLeft="205dp"
                />
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=">"
                android:textSize="30sp"
                android:id="@+id/bt2"
                android:background="#feffff"/>
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            >
            <TextView
                android:id="@+id/tv4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="列表页评论"
                android:textSize="25sp"
                />
            <TextView
                android:id="@+id/tv5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="不限 >"
                android:textSize="25sp"
                android:layout_marginLeft="153dp"
                />
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            >
            <TextView
                android:id="@+id/tv6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="2G/3G网络流量"
                android:textSize="25sp"
                />
            <TextView
                android:id="@+id/tv7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="较省流量(普通下载)>"
                android:textSize="15sp"
                android:layout_marginLeft="15dp"
                />
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            >
            <TextView
                android:id="@+id/tv8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="清理缓存"
                android:textSize="25sp"
                />
            <TextView
                android:id="@+id/tv9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="当前缓存:2.48MB>"
                android:textSize="20sp"
                android:layout_marginLeft="70dp"
                />
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            >
            <TextView
                android:id="@+id/tv10"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="推送通知"
                android:textSize="25sp"
                />
            <CheckBox
                android:id="@+id/c2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="200dp"
               android:checked="true"
                />
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            >
            <TextView
                android:id="@+id/tv11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="互动插件"
                android:textSize="25sp"
                />
            <CheckBox
                android:id="@+id/c3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="200dp"
                android:checked="true"
                />
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>
        <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        >
        <TextView
            android:id="@+id/tv12"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="自动优化阅读"
            android:textSize="25sp"
            />

        <CheckBox
            android:id="@+id/c4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="152dp"
            android:checked="true"
            />
    </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            >
            <TextView
                android:id="@+id/tv13"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="收藏时转发"
                android:textSize="25sp"
                />
            <CheckBox
                android:id="@+id/c5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"

                android:layout_marginLeft="175dp"
                />
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            >
            <TextView
                android:id="@+id/tv14"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="顶踩时转发"
                android:textSize="25sp"
                />
            <CheckBox
                android:id="@+id/c6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="175dp"
                />
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#a9a8a8"
            ></View>

    </LinearLayout>

</ScrollView>
</LinearLayout></strong></span>
package com.example.jreduch08.SDK;

import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import android.widget.Toast;

import com.example.jreduch08.R;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

public class ShowActivity extends AppCompatActivity {
    private TextView show;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        show= (TextView) findViewById(R.id.show);
        show.setText(readFile());

    }
    //从SD卡读取文件
    public String  readFile(){

        BufferedReader reader=null;

        FileInputStream fis=null;
        StringBuilder sbd=new StringBuilder();

        String statu= Environment.getExternalStorageState();
        if (!statu.equals(Environment.MEDIA_MOUNTED)){

            Toast.makeText(this,"SD卡未就绪",Toast.LENGTH_SHORT).show();
            return  "";
        }
        File root=Environment.getExternalStorageDirectory();
        try {
            fis=new FileInputStream(root+"/sd.txt");
            reader= new BufferedReader(new InputStreamReader(fis));
            String row="";
            try {
                while ((row=reader.readLine())!=null){

                    sbd.append(row);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (FileNotFoundException e) {
            Toast.makeText(this,"文件不存在",Toast.LENGTH_SHORT).show();

            e.printStackTrace();
        }finally {
            if (reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return  sbd.toString();
    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.jreduch08.SDK.ShowActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/show"
        android:textSize="20sp"
        android:text="读取结果显示"
        />
</RelativeLayout>

保存到SDK——对象 类

package com.example.jreduch08.entity;

import java.io.Serializable;

/**
 * Created by 冲天之峰 on 2016/8/16.
 */
public class Settings  implements Serializable {
    private boolean  c1;
    private boolean  c2;
    private boolean  c3;
    private boolean  c4;
    private boolean  c5;
    private boolean  c6;
    private String  textsize;

    public Settings(String textsize, boolean c6, boolean c5, boolean c4, boolean c3, boolean c2, boolean c1) {
        this.textsize = textsize;
        this.c6 = c6;
        this.c5 = c5;
        this.c4 = c4;
        this.c3 = c3;
        this.c2 = c2;
        this.c1 = c1;
    }

    public boolean isC1() {
        return c1;
    }

    public void setC1(boolean c1) {
        this.c1 = c1;
    }

    public boolean isC2() {
        return c2;
    }

    public void setC2(boolean c2) {
        this.c2 = c2;
    }

    public boolean isC3() {
        return c3;
    }

    public void setC3(boolean c3) {
        this.c3 = c3;
    }

    public boolean isC4() {
        return c4;
    }

    public void setC4(boolean c4) {
        this.c4 = c4;
    }

    public boolean isC5() {
        return c5;
    }

    public void setC5(boolean c5) {
        this.c5 = c5;
    }

    public boolean isC6() {
        return c6;
    }

    public void setC6(boolean c6) {
        this.c6 = c6;
    }

    public String getTextsize() {
        return textsize;
    }

    public void setTextsize(String textsize) {
        this.textsize = textsize;
    }

    public Settings() {

    }

}
package com.example.jreduch08.entity;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

import com.example.jreduch08.R;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.StreamCorruptedException;

public class DuixActivity extends AppCompatActivity {
    private CheckBox c1, c2, c3, c4, c5, c6;
    private Button bt0, bt1, bt2;
    private TextView tv3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_duix);
        getSupportActionBar().hide();

        c1 = (CheckBox) findViewById(R.id.c1);
        c2 = (CheckBox) findViewById(R.id.c2);
        c3 = (CheckBox) findViewById(R.id.c3);
        c4 = (CheckBox) findViewById(R.id.c4);
        c5 = (CheckBox) findViewById(R.id.c5);
        c6 = (CheckBox) findViewById(R.id.c6);

        bt0 = (Button) findViewById(R.id.bt0);
        bt1 = (Button) findViewById(R.id.bt1);
        bt2 = (Button) findViewById(R.id.bt2);
        tv3 = (TextView) findViewById(R.id.tv3);

        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder builder = new AlertDialog.Builder(DuixActivity.this);
                builder.setTitle("字体大小请选择");
                builder.setIcon(R.mipmap.ic_launcher);
                final String[] items = {"大", "中", "小"};
                // builder.setMultiChoiceItems()多选
                builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int i) {
                        Toast.makeText(getBaseContext(), items[i].toString(), Toast.LENGTH_SHORT).show();
                        tv3.setText(items[i].toString());
                        dialog.dismiss();
                    }
                });
                builder.setCancelable(false);
                AlertDialog alertDialog = builder.create();
                alertDialog.show();
            }
        });

        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Settings sets = new Settings();
                sets.setC1(c1.isChecked());
                sets.setC2(c2.isChecked());
                sets.setC3(c3.isChecked());
                sets.setC4(c4.isChecked());
                sets.setC5(c5.isChecked());
                sets.setC6(c6.isChecked());
                sets.setTextsize(tv3.getText().toString());

                String state = Environment.getExternalStorageState();
                if (!state.equals(Environment.MEDIA_MOUNTED)) {
                    Toast.makeText(getBaseContext(), "请检查SD卡", Toast.LENGTH_SHORT).show();
                    return;
                }
                File root = Environment.getExternalStorageDirectory();
                FileOutputStream fos = null;
                ObjectOutputStream oos = null;
                try {
                    fos = new FileOutputStream(root + "/ttings.txt");
                    oos = new ObjectOutputStream(fos);
                    oos.writeObject(sets);
                    Toast.makeText(getBaseContext(), "保存成功", Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (oos != null) {
                        try {
                            oos.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }

            }
        });
     bt0.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             Intent intent=new Intent(DuixActivity.this,Show1Activity.class);
             startActivity(intent);

         }
     });

    }

    @Override
    protected void onStart() {
        super.onStart();
        readSettings();
    }

    public void readSettings() {
        File root = Environment.getExternalStorageDirectory();
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        try {
            fis = new FileInputStream(root+ "/ttings.txt");
            ois = new ObjectInputStream(fis);
            Settings sets = (Settings) ois.readObject();
            tv3.setText(sets.getTextsize());
            c1.setChecked(sets.isC1());
            c2.setChecked(sets.isC2());
            c3.setChecked(sets.isC3());
            c4.setChecked(sets.isC4());
            c5.setChecked(sets.isC5());
            c6.setChecked(sets.isC6());

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (StreamCorruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"

        >
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="读取"
            android:id="@+id/bt0"
            android:background="#feffff"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="设置"
            android:textSize="30sp"
            android:layout_marginLeft="80dp"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="意见反馈"
            android:id="@+id/bt1"
            android:background="#feffff"
            android:layout_marginLeft="50dp"
            />
    </LinearLayout>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"></LinearLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="列表显示摘要"
                    android:textSize="25sp"

                    />
                <CheckBox
                    android:id="@+id/c1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="25sp"
                    android:layout_marginLeft="150dp"
                    />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:id="@+id/tv2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="字体大小"
                    android:textSize="25sp"
                    />
                <TextView
                    android:id="@+id/tv3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="中"
                    android:textSize="25sp"
                    android:layout_marginLeft="205dp"
                    />
                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=">"
                    android:textSize="30sp"
                    android:id="@+id/bt2"
                    android:background="#feffff"/>
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:id="@+id/tv4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="列表页评论"
                    android:textSize="25sp"
                    />
                <TextView
                    android:id="@+id/tv5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="不限 >"
                    android:textSize="25sp"
                    android:layout_marginLeft="153dp"
                    />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:id="@+id/tv6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="2G/3G网络流量"
                    android:textSize="25sp"
                    />
                <TextView
                    android:id="@+id/tv7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="较省流量(普通下载)>"
                    android:textSize="15sp"
                    android:layout_marginLeft="15dp"
                    />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:id="@+id/tv8"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="清理缓存"
                    android:textSize="25sp"
                    />
                <TextView
                    android:id="@+id/tv9"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="当前缓存:2.48MB>"
                    android:textSize="20sp"
                    android:layout_marginLeft="70dp"
                    />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:id="@+id/tv10"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="推送通知"
                    android:textSize="25sp"
                    />
                <CheckBox
                    android:id="@+id/c2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="200dp"
                    android:checked="true"
                    />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:id="@+id/tv11"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="互动插件"
                    android:textSize="25sp"
                    />
                <CheckBox
                    android:id="@+id/c3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="200dp"
                    android:checked="true"
                    />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:id="@+id/tv12"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="自动优化阅读"
                    android:textSize="25sp"
                    />

                <CheckBox
                    android:id="@+id/c4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="152dp"
                    android:checked="true"
                    />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:id="@+id/tv13"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="收藏时转发"
                    android:textSize="25sp"
                    />
                <CheckBox
                    android:id="@+id/c5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"

                    android:layout_marginLeft="175dp"
                    />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                >
                <TextView
                    android:id="@+id/tv14"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="顶踩时转发"
                    android:textSize="25sp"
                    />
                <CheckBox
                    android:id="@+id/c6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="175dp"
                    />
            </LinearLayout>
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#a9a8a8"
                ></View>

        </LinearLayout>

    </ScrollView>
</LinearLayout>
package com.example.jreduch08.entity;

import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

import com.example.jreduch08.R;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.StreamCorruptedException;

public class Show1Activity extends AppCompatActivity {
    private TextView show;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show1);

        show= (TextView) findViewById(R.id.show);

        readSettings();
    }

    public void readSettings() {
        File root = Environment.getExternalStorageDirectory();
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        try {
            fis = new FileInputStream(root+ "/ttings.txt");
            ois = new ObjectInputStream(fis);
            Settings sets = (Settings) ois.readObject();
            show.setText(sets.getTextsize()+sets.isC1()+sets.isC2()+sets.isC3()+sets.isC4()

            +sets.isC5()+sets.isC6());

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (StreamCorruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.jreduch08.SDK.ShowActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/show"
        android:textSize="20sp"
        android:text="读取结果显示"
        />
</RelativeLayout>

内存储——SharePreference

package com.example.jreduch08.Sharepreferences;

import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

import com.example.jreduch08.R;

public class SharePreferenceZyfActivity extends AppCompatActivity {
    private CheckBox c1,c2,c3,c4,c5,c6;
    private Button bt0, bt1,bt2;
    private TextView tv3,show;
    private SharedPreferences sp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_share_preference_zyf);
        getSupportActionBar().hide();

        c1= (CheckBox) findViewById(R.id.c1);
        c2= (CheckBox) findViewById(R.id.c2);
        c3= (CheckBox) findViewById(R.id.c3);
        c4= (CheckBox) findViewById(R.id.c4);
        c5= (CheckBox) findViewById(R.id.c5);
        c6= (CheckBox) findViewById(R.id.c6);

        bt0= (Button) findViewById(R.id.bt0);
        bt1= (Button) findViewById(R.id.bt1);
        bt2= (Button) findViewById(R.id.bt2);
        tv3= (TextView) findViewById(R.id.tv3);
        show= (TextView) findViewById(R.id.show);
        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder builder=new AlertDialog.Builder(SharePreferenceZyfActivity.this);
                builder.setTitle("字体大小请选择");
                builder.setIcon(R.mipmap.ic_launcher);
                final String[] items={"大","中","小"};
                // builder.setMultiChoiceItems()多选
                builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int i) {
                        Toast.makeText(getBaseContext(), items[i].toString(), Toast.LENGTH_SHORT).show();
                        tv3.setText(items[i].toString());
                        dialog.dismiss();
                    }
                });
                builder.setCancelable(false);
                AlertDialog alertDialog=builder.create();
                alertDialog.show();
            }
        });

        //读取 SharePreference

        sp=getSharedPreferences("userInfo",MODE_PRIVATE);

      bt1.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              //保存数据到SharePreference
              SharedPreferences.Editor editor=sp.edit();
              editor.putString("text",tv3.getText().toString());
              editor.putBoolean("cc1",c1.isChecked());
              editor.putBoolean("cc2",c2.isChecked());
              editor.putBoolean("cc3",c3.isChecked());
              editor.putBoolean("cc4",c4.isChecked());
              editor.putBoolean("cc5",c5.isChecked());
              editor.putBoolean("cc6",c6.isChecked());
              editor.commit();

          }
      });

    }
    public  void setSettings(){
        Boolean ccc1=sp.getBoolean("cc1",false);
        Boolean ccc2=sp.getBoolean("cc2",false);
        Boolean ccc3=sp.getBoolean("cc3",false);
        Boolean ccc4=sp.getBoolean("cc4",false);
        Boolean ccc5=sp.getBoolean("cc5",false);
        Boolean ccc6=sp.getBoolean("cc6",false);
        String   text1=sp.getString("text","中");
        c1.setChecked(ccc1);
        c2.setChecked(ccc2);
        c3.setChecked(ccc3);
        c4.setChecked(ccc4);
        c5.setChecked(ccc5);
        c6.setChecked(ccc6);
        tv3.setText(text1);
    }

    @Override
    protected void onStart() {
        super.onStart();
        setSettings();
    }
}

解析JSON

//json对应json数据中的{ } 大括号
JSONObject  obj=new JSONObject(sbd.toString());
//json数值对应json数据中的【】 中括号
JSONArray ja=obj.getJSONArray("data");
package com.example.jreduch08;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class PaserJsonActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_paser_json);
        StringBuilder sbd=new StringBuilder();
        BufferedReader reader=null;
        InputStream is=null;
        try {
            is=getResources().getAssets().open("cityinfo2.txt");
            reader=new BufferedReader(new InputStreamReader(is));
            String row="";
            while ((row=reader.readLine())!=null){
                sbd.append(row);
             //   sbd.append("\n");
            }
            try {

                //json对应json数据中的{ } 大括号
                JSONObject  obj=new JSONObject(sbd.toString());
                //json数值对应json数据中的【】 中括号
                JSONArray ja=obj.getJSONArray("data");
                for (int i=0;i<ja.length();i++){

                    JSONObject jo=(JSONObject) ja.get(i);
                    if (jo.has("name")){
                    String name=jo.getString("name");
                        Log.d("====",name);
                    }
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }

    }
}

package com.example.jreduch08.Sharepreferences;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.example.jreduch08.R;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class PaserJson2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_paser_json2);
        StringBuilder sbd=new StringBuilder();
        BufferedReader reader=null;
        InputStream is=null;
        try {
            is=getResources().getAssets().open("jsonNews.txt");
            reader=new BufferedReader(new InputStreamReader(is));
            String row="";
            while ((row=reader.readLine())!=null){
                sbd.append(row);
                //   sbd.append("\n");
            }
            try {

                //json对应json数据中的{ } 大括号
                JSONObject obj = new JSONObject(sbd.toString());
                //json数值对应json数据中的【】 中括号
                JSONObject ja = obj.getJSONObject("showapi_res_body");
                JSONObject ja1 = ja.getJSONObject("pagebean");
                JSONArray ja2 = ja1.getJSONArray("contentlist");
                for (int k = 0; k < ja2.length(); k++) {
                    JSONObject jo = (JSONObject) ja2.get(k);
                    if (jo.has("content")) {
                        String content = jo.getString("content");
                        Log.d("====", content);

                    }

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }

    }
}

				
时间: 2024-10-08 10:19:55

Android——数据存储(四种方式之二)读写SD卡——练习的相关文章

Android 数据存储四种方式

Android数据的四种存储方式 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.  分别是:SharePreference.SQLite.Content Provider和File.  由于Android系统中,数据基本都是私有的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider. SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存

Android数据存储五种方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据     2 文件存储数据       3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分

Android 数据存储五种方式

1.概述 Android提供了5种方式来让用户保存持久化应用程序数据.根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存储空间等,分别是: ① 使用SharedPreferences存储数据 ② 文件存储数据 ③ SQLite数据库存储数据 ④ 使用ContentProvider存储数据 ⑤ 网络存储数据 Android提供了一种方式来暴露你的数据(甚至是私有数据)给其他应用程序 - ContentProvider.它是一个可选组件,可公开读写你应用程序数

[Android] 数据存储五种方式使用与总结

1.概述 Android提供了5种方式来让用户保存持久化应用程序数据.根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存储空间等,分别是: ① 使用SharedPreferences存储数据 ② 文件存储数据 ③ SQLite数据库存储数据 ④ 使用ContentProvider存储数据 ⑤ 网络存储数据 Android提供了一种方式来暴露你的数据(甚至是私有数据)给其他应用程序 - ContentProvider.它是一个可选组件,可公开读写你应用程序数

(转载)Android数据存储三种方式总结

本文转载自:http://www.cnblogs.com/ITtangtang/p/3920916.html 本文介绍Android平台进行数据存储的三大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 其他: 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符

Android——数据存储(四种方式之二)读写SD卡

Android--数据存储(四种方式) 1.SharedPrefereces 只能保存一些简单的数轻量级.XML  存储文件名, 数据保存在data/data/basepackage/shared_prefs/myopt.xml中    实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default) 2.读写SD卡  SD的根目录  适用于数据流读写 实现步骤:加入读写SD卡权限

Android数据的四种存储方式之SharedPreferences

除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data/data/< >/shared_prefs目录下.SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现.实现SharedPreferences存储的步骤如下: 一.根据Context获取SharedPreferences对象 二.利用edi

Android数据的四种存储方式

很清晰的思路,转自Android数据的四种存储方式 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider. SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (三) —— SharePreferences 除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data/data/<包名>/shared_prefs目录下.SharedPreferences对象本身只能获取数据而不支持存储和修

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览

Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Pro