在Android应用中多次下载已下载的.txt文件中的数据

时间:2015-03-03 09:09:41

标签: android file

我正在开发一个应用程序,我通过附加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();
            }
        }
    });

2 个答案:

答案 0 :(得分:0)

我找到了一个可能的解决方案。我可以链接文件管理器(外部应用程序),用户可以从中选择他想要阅读的文件。 感谢@greenapps fir显示文件列表的想法。

答案 1 :(得分:0)

您可以使用正则表达式获取所有文件,然后按照以下方式处理文件:

1.如果只找到一个文件,请阅读;

2.如果找到多个文件,则比较并读取最后一个数字最大的文件

但是这个解决方案仍有一个问题,如果有文件data.txt和data-3.txt,我们想要读取的文件可能会变成data-2.txt,但我们真正读到的是data-3.txt。

或者,也许你可以通过判断文件建立的时间来获得你想要的文件。