我创建了两个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());
}
}
修改 问题解决了:))
答案 0 :(得分:0)
重命名仅适用于Linux(Android),如果文件位于同一文件系统中,则以读写方式挂载,并且您具有对源和目标目录的写入权限。
因此,例如,如果一个文件在SD卡上而另一个文件在内部存储器上,则重命名将失败。
你的情况会发生类似的事情吗?
检查是否可以将文件作为测试删除会很有趣。