我正在开发一个应用程序,我通过附加gmail从一端发送.txt文件。每次发送此文件时,其名称为data.txt。当在另一端下载该文件时,在第一次下载时它的名称是相同的,即data.txt。但是,当另一个文件以相同的名称发送时,接收端的文件名称变为data-1.txt,data-2.txt等。因此,我无法读取正确的文件。请问有人能给我一些解决这个问题的建议吗?发送和接收代码如下:发送
bSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String fileName = "data";
String toWrite = enterText.getText().toString();
FileOutputStream fos;
try {
String path = Environment.getExternalStorageDirectory().toString();
Log.v("path", path);
File myFile = new File("" + path + "/" + fileName + ".txt");
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(toWrite);
Log.v("file written", toWrite);
myOutWriter.close();
fOut.close();
Uri u1 = null;
u1 = Uri.fromFile(myFile);
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "MPPT Configuration Data");
sendIntent.putExtra(Intent.EXTRA_STREAM, u1);
sendIntent.setType("text/html");
startActivity(sendIntent);
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
READ:
bRead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String fileName = "data";
StringBuffer stringBuffer = new StringBuffer();
String aDataRow = "";
String aBuffer = "";
try {
File myFile = new File("/storage/sdcard0/download/" + fileName + ".txt");
FileInputStream fIn = new FileInputStream(myFile);
BufferedReader myReader = new BufferedReader(
new InputStreamReader(fIn));
while ((aDataRow = myReader.readLine()) != null) {
aBuffer += aDataRow + "\n";
}
myReader.close();
Log.v("read data", "" + aBuffer);
tvData.setText(aBuffer);
}catch (IOException e2) {
e2.printStackTrace();
}
}
});
答案 0 :(得分:0)
我找到了一个可能的解决方案。我可以链接文件管理器(外部应用程序),用户可以从中选择他想要阅读的文件。 感谢@greenapps fir显示文件列表的想法。
答案 1 :(得分:0)
您可以使用正则表达式获取所有文件,然后按照以下方式处理文件:
1.如果只找到一个文件,请阅读;
2.如果找到多个文件,则比较并读取最后一个数字最大的文件
但是这个解决方案仍有一个问题,如果有文件data.txt和data-3.txt,我们想要读取的文件可能会变成data-2.txt,但我们真正读到的是data-3.txt。
或者,也许你可以通过判断文件建立的时间来获得你想要的文件。