上篇只是简单的介绍如何存取数据,有时候需要存储一个很多数据的集合,那么改如何操作哪?直接代码
基本配置和上篇的一样只是在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();
}
}
}
版权声明:本文为qq_30299243原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。