zoukankan      html  css  js  c++  java
  • 非常标准的将数据保存到file并从file中读取数据。

    字符流:Reader(读) Writer(写)

    字节流:InputStream(读数据)  OutputStream(写数据)

    1,字节流

    InputStream(读),OutputStream(写)

    2,字符流

    Reader(读),Writer(写)

    结论:只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

    向文件中写入内容

    try {

    FileOutputStream fos = openFileOutput(INTERNAL_FILENAME , MODE_APPEND);

    fos.write("张三 ".getBytes());   

    // String 的getBytes()方法用于将String==>byte[]

    fos.write("89 ".getBytes());

    fos.close();

    Toast.makeText(this, "写入成功!", Toast.LENGTH_LONG).show();

    } catch (Exception e) {

    e.printStackTrace();

    show.setText("写入失败!");

    }

    默认将info.txt保存的位置为:data/data/包名/files/info.txt

    读取的时候也是默认去data/data/包名/files目录下去读取具体的文件,如下:

    try {

    FileInputStream fis = openFileInput(INTERNAL_FILENAME);

    BufferedReader br = new BufferedReader(new InputStreamReader(fis , "utf-8")); //读取行的操作

    String content = "";

    String line;

    while((line = br.readLine()) != null) {

    content += line + " ";

    }

    br.close();

    fis.close();

    show.setText(content);

    } catch (Exception e) {

    e.printStackTrace();

    Toast.makeText(this, "读取数据失败!", Toast.LENGTH_LONG).show();

    }

    写一个User类,如下:

    public class User {

    private String name;

    private long date;

    private int count;

    public User(String name, long date, int count) {

    super();

    this.name = name;

    this.date = date;

    this.count = count;

    }

    public User(String name, int count) {

    super();

    this.name = name;

    this.count = count;

    this.date = System.currentTimeMillis();

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public long getDate() {

    return date;

    }

    public void setDate(long date) {

    this.date = date;

    }

    public int getCount() {

    return count;

    }

    public void setCount(int count) {

    this.count = count;

    }

    @Override

    public String toString() {

    return "User [name=" + name + ", date=" + date + ", count=" + count

    + "]";

    }

    public String writeInfo() {

    return name+","+date+","+count;

    }

    }

    点击一次加入用户按钮,向文件中加入一条数据,如下:

    InternalStorageTool.appendInfo(this, new User("bb" , 3));

    下面是加入的方法

    // 追加用户信息

    public static boolean appendInfo(Context context , User user) {

    try {

    FileOutputStream fos = context.openFileOutput(Const.IN_FILENAME, Context.MODE_APPEND) ;

    //这里有追加的权限,Context.MODE_APPEND

    fos.write((user.writeInfo() + " ").getBytes());

    //这里转换成字节写入

    fos.close();

    return true;

    } catch (Exception e) {

    e.printStackTrace();

    return false;

    }

    }

    点击某按钮读取所有用户的数据

    // 读取所有用户信息

    public static List<User> readAllInfo(Context context) {

    try {

    FileInputStream fis = context.openFileInput(Const.IN_FILENAME);

    BufferedReader br = new BufferedReader(new InputStreamReader(fis, "utf-8"));

    List<User> users = new ArrayList<User>();

    String line;

    while((line = br.readLine()) != null) {

    users.add(parse(line));

    }

    fis.close();

    br.close();

    return users;

    } catch (Exception e) {

    e.printStackTrace();

    return null;

    }

    }

    Parse()方法如下:

    private static User parse(String info) {

    String[] infoes = info.split(",");

    long date = Long.parseLong(infoes[1]);

    int count = Integer.parseInt(infoes[2]);

    return new User(infoes[0] , date , count);

    }

  • 相关阅读:
    51nod乘积之和
    Dell服务器安装OpenManage(OMSA)
    Nginx反向代理PHP
    搭建haproxy
    108. Convert Sorted Array to Binary Search Tree
    60. Permutation Sequence
    142. Linked List Cycle II
    129. Sum Root to Leaf Numbers
    118. Pascal's Triangle
    26. Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/kuaileyuyi/p/3853167.html
Copyright © 2011-2022 走看看