安卓 设计两个输入框和5个按钮分别完成内部文件读写、外部文件读写、XML序列化功能。
这里提供一个简单的示例代码:
- 在布局文件中添加两个EditText和五个Button:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入内容1"/>
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入内容2"/>
<Button
android:id="@+id/btnInternalRead"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="内部文件读取"/>
<Button
android:id="@+id/btnInternalWrite"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="内部文件写入"/>
<Button
android:id="@+id/btnExternalRead"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="外部文件读取"/>
<Button
android:id="@+id/btnExternalWrite"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="外部文件写入"/>
<Button
android:id="@+id/btnXml"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="XML序列化"/>
</LinearLayout>
- 在Activity中添加按钮点击事件处理:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText editText1, editText2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText1 = findViewById(R.id.editText1);
editText2 = findViewById(R.id.editText2);
Button btnInternalRead = findViewById(R.id.btnInternalRead);
Button btnInternalWrite = findViewById(R.id.btnInternalWrite);
Button btnExternalRead = findViewById(R.id.btnExternalRead);
Button btnExternalWrite = findViewById(R.id.btnExternalWrite);
Button btnXml = findViewById(R.id.btnXml);
btnInternalRead.setOnClickListener(this);
btnInternalWrite.setOnClickListener(this);
btnExternalRead.setOnClickListener(this);
btnExternalWrite.setOnClickListener(this);
btnXml.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnInternalRead:
readInternalFile();
break;
case R.id.btnInternalWrite:
writeInternalFile();
break;
case R.id.btnExternalRead:
readExternalFile();
break;
case R.id.btnExternalWrite:
writeExternalFile();
break;
case R.id.btnXml:
xmlSerialize();
break;
default:
break;
}
}
private void readInternalFile() {
try {
FileInputStream fis = openFileInput("my_file.txt");
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
String content = new String(buffer);
editText1.setText(content);
} catch (IOException e) {
e.printStackTrace();
}
}
private void writeInternalFile() {
String content = editText1.getText().toString();
try {
FileOutputStream fos = openFileOutput("my_file.txt", MODE_PRIVATE);
fos.write(content.getBytes());
fos.close();
Toast.makeText(this, "文件写入成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
private void readExternalFile() {
File file = new File(getExternalFilesDir(null), "my_file.txt");
try {
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
String content = new String(buffer);
editText1.setText(content);
} catch (IOException e) {
e.printStackTrace();
}
}
private void writeExternalFile() {
String content = editText1.getText().toString();
File file = new File(getExternalFilesDir(null), "my_file.txt");
try {
FileOutputStream fos = new FileOutputStream(file, true);
fos.write(content.getBytes());
fos.close();
Toast.makeText(this, "文件写入成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
private void xmlSerialize() {
String name = editText1.getText().toString();
String age = editText2.getText().toString();
try {
FileOutputStream fos = openFileOutput("my_xml.xml", MODE_PRIVATE);
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fos, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "person");
serializer.startTag(null, "name");
serializer.text(name);
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(age);
serializer.endTag(null, "age");
serializer.endTag(null, "person");
serializer.endDocument();
fos.close();
Toast.makeText(this, "XML序列化成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代码实现了内部文件读写、外部文件读写和XML序列化功能,可以根据实际需求进行修改和优化
原文地址: https://www.cveoy.top/t/topic/cqY8 著作权归作者所有。请勿转载和采集!