将一个文件的内容移动到另一个文件

时间:2015-08-03 09:32:45

标签: android android-arrayadapter fileinputstream fileoutputstream

我创建了两个files,其中一个是少行(临时),我想删除原始内容,以及原始内容的临时替换。 renameTo不起作用,我不知道为什么:/或者采取一些完全不同的方式来解决它?

删除行:

    ArrayAdapter<String> adapter = (ArrayAdapter<String>) listViewZaznam.getAdapter();

    FileInputStream inputStream = openFileInput(String.valueOf(oldfile));

    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

    FileOutputStream fileout = openFileOutput(String.valueOf(newfile), MODE_APPEND);
    OutputStreamWriter outputWriter = new OutputStreamWriter(fileout);


    String currentLine;

    while((currentLine = bufferedReader.readLine()) != null) {

        String trimmedLine = currentLine.trim();
        if(trimmedLine.equals(removethisline)) {
            adapter.remove(removethisline);
            continue;
        }
        outputWriter.write(currentLine + System.getProperty("line.separator"));

    }

    outputWriter.close();
    bufferedReader.close();
    newfile.renameTo(oldfile); // ??

}

从文件中读取

    ArrayAdapter<String> adapter = (ArrayAdapter<String>) listViewZaznam.getAdapter();
    try {
        FileInputStream inputStream = openFileInput(String.valueOf(oldfile));

        if (inputStream != null) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

            String drziaciString = "";


            while ((drziaciString = bufferedReader.readLine()) != null) {


                adapter.add(drziaciString);
                listViewZaznam.setSelection(adapter.getCount() - 1);
            }
            inputStream.close();
        }
    } catch (FileNotFoundException e) {
        Log.e(TAG, "File not found: " + e.toString());
    } catch (IOException e) {
        Log.e(TAG, "Can not read file: " + e.toString());
    }

}

修改 问题解决了:))

1 个答案:

答案 0 :(得分:0)

重命名仅适用于Linux(Android),如果文件位于同一文件系统中,则以读写方式挂载,并且您具有对源和目标目录的写入权限。

因此,例如,如果一个文件在SD卡上而另一个文件在内部存储器上,则重命名将失败。

你的情况会发生类似的事情吗?

检查是否可以将文件作为测试删除会很有趣。