上篇只是简单的介绍如何存取数据,有时候需要存储一个很多数据的集合,那么改如何操作哪?直接代码
基本配置和上篇的一样只是在activity里更改了两个方法而已
package dayin.com.myapplication.io; import android.app.Activity; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Environment; import android.support.annotation.Nullable; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import dayin.com.myapplication.R; /** * Created by lake * 此类的功能:读写文件的测试 */ public class IOActivity extends AppCompatActivity implements View.OnClickListener { private Button ceshi; private Button ceshi1; final String sFileName = "lake.txt";//创建的文件的名字 //原始数据 private ArrayList<String> list = new ArrayList<>(); //读取数据后存放的集合 private ArrayList<String> getlist = new ArrayList<>(); private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"}; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ioativity); verifyStoragePermissions(this); ceshi = findViewById(R.id.ceshi); ceshi1 = findViewById(R.id.ceshi1); ceshi.setOnClickListener(this); ceshi1.setOnClickListener(this); list.add("数据1"); list.add("数据2"); list.add("数据3"); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.ceshi: WriteFile(); break; case R.id.ceshi1: ReadMsgLine(); // Log.e("ioceshi11", "onClick: " + ReadMsg()); break; } } //读取信息 private void ReadMsgLine() { File root = Environment.getExternalStorageDirectory(); File file = new File(root, "lake45.txt"); try { if (file.exists()) { BufferedReader br = new BufferedReader(new FileReader(file)); String line = null; while ((line = br.readLine()) != null) { getlist.add(line); } br.close(); for (int i = 0; i < getlist.size(); i++) { Log.e("输出得到的字符", "ReadMsgLine: " + getlist.get(i)); } } else { Toast.makeText(this, "文件不存在", Toast.LENGTH_LONG).show(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //测试io流 public void WriteFile() { File root = Environment.getExternalStorageDirectory(); File file = new File(root, "lake45.txt"); try { BufferedWriter bw = new BufferedWriter(new FileWriter(file)); for (int i = 0; i < list.size(); i++) { String str = list.get(i); bw.write(str); bw.newLine(); } bw.close(); } catch (IOException e) { e.printStackTrace(); } } public String ReadMsg() { String content = null; File root = Environment.getExternalStorageDirectory(); File file = new File(root, sFileName); try { if (file.exists()) { FileInputStream fis = new FileInputStream(file); byte[] buffer = new byte[1024]; ByteArrayOutputStream baos = new ByteArrayOutputStream(); int len = 0; while ((len = fis.read(buffer)) != -1) { baos.write(buffer, 0, len); } byte[] data = baos.toByteArray(); baos.close(); fis.close();//记得关闭 content = new String(data); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return content; } //判断是否存在读取的文件 public boolean isFileExist() { File file = new File(Environment.getExternalStorageDirectory() + "/" + sFileName); return file.exists(); } //删除文件 public boolean delFile() { File file = new File(Environment.getExternalStorageDirectory() + "/" + sFileName); return file.delete(); } //6.0以后动态获取读取sd卡的权限,这里只是简单的写一下,用的时候可以在优化。 public static void verifyStoragePermissions(Activity activity) { try { //检测是否有写的权限 int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE"); if (permission != PackageManager.PERMISSION_GRANTED) { // 没有写的权限,去申请写的权限,会弹出对话框 ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } } catch (Exception e) { e.printStackTrace(); } } }