用于保存在SD卡中的代码,我已经在注册的onclicklistner中声明了按钮保存,如下所示:
btn.setOnClickListener(new View.OnClickListener()
{
EditText filename =(EditText) findViewById(R.id.filename);
EditText filecontent =(EditText) findViewById(R.id.filecontent);
public void onClick(View view)
{
String str = filename.getText().toString();
String str2= filecontent.getText().toString();
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard.getAbsolutePath()+"/MyFiles");
directory.mkdirs();
File file = new File(directory,"textfile.txt");
FileOutputStream fOut = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(str);
osw.write(" ");
osw.write(str2);
osw.close();
}
}
在加载按钮上我已经在定义的块中注册了onclicklistener private static final int READ_BLOCK_SIZE = 100; 加载代码是:
Button load = (Button) findViewById(R.id.load);
load.setOnClickListener(new View.OnClickListener() {
EditText filename =(EditText) findViewById(R.id.filename);
EditText filecontent =(EditText) findViewById(R.id.filecontent);
public void onClick(View v) {
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard.getAbsolutePath() +
"/MyFiles");
File file = new File(directory, "textfile.txt");
FileInputStream fIn = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fIn);
char[] inputBuffer = new char[READ_BLOCK_SIZE];
String s = "";
int charRead;
while ((charRead = isr.read(inputBuffer))>0)
{
//---convert the chars to a String---
String readString =
String.copyValueOf(inputBuffer, 0,
charRead);
s += readString;
inputBuffer = new char[READ_BLOCK_SIZE];
}
filename.setText(s);
filecontent.setText(s);
Toast.makeText(getBaseContext(),
"File loaded successfully!",
Toast.LENGTH_SHORT).show();
}
});
显示每个文本框中文件的所有内容!!我想要从内容中提取文件名!!
答案 0 :(得分:0)
除非您需要该文件是人类可读的,否则我建议使用DataInputStream / DataOutputStream将两个String值存储为序列化Java对象:
<强>书写:强>
public void onClick(View view) {
String str = filename.getText().toString();
String str2= filecontent.getText().toString();
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard, "MyFiles");
directory.mkdirs();
File file = new File(directory, "textfile.txt");
FileOutputStream fOut = new FileOutputStream(file);
DataOutputStream os = new DataOutputStream(fOut);
os.writeUTF(str);
os.writeUTF(str2);
os.close();
}
<强>读:强>
public void onClick(View v) {
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard, "MyFiles");
File file = new File(directory, "textfile.txt");
FileInputStream fIn = new FileInputStream(file);
DataInputStream is = new DataInputStream(fIn);
String name = is.readUTF();
String content = is.readUTF();
is.close();
filename.setText(name);
filecontent.setText(content);
Toast.makeText(getBaseContext(),
"File loaded successfully!",
Toast.LENGTH_SHORT).show();
}
但请注意,建议SDCard的所有I / O都在工作线程中完成。在像这样的事件处理程序中执行它并不是一个好习惯。为每个人点燃AsyncTask
要好得多。