我在android中创建了一个基于模式锁的项目。
我有一个名为category.txt
的文件
文件内容如下
Sports:Race:Arcade:
不,我想要的是,每当用户为特定游戏类别绘制图案时,该图案应该附加在该类别的前面。
例如:
Sports:Race:"string/pattern string to be appended here for race"Arcade:
我使用了以下代码,但它无法正常工作。
private void writefile(String getpattern,String category)
{
String str1;
try {
file = new RandomAccessFile(filewrite, "rw");
while((str1 = file.readLine()) != null)
{
String line[] = str1.split(":");
if(line[0].toLowerCase().equals(category.toLowerCase()))
{
String colon=":";
file.write(category.getBytes());
file.write(colon.getBytes());
file.write(getpattern.getBytes());
file.close();
Toast.makeText(getActivity(),"In Writefile",Toast.LENGTH_LONG).show();
}
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch(IOException io)
{
io.printStackTrace();
}
}
请帮忙!
答案 0 :(得分:0)
使用RandomAccessFile
你必须计算位置。我认为在apache-commons-io FileUtils
的帮助下更换文件内容要容易得多。如果你有一个非常大的文件,这可能不是最好的主意,但它很简单。
String givenCategory = "Sports";
String pattern = "stringToAppend";
final String colon = ":";
try {
List<String> lines = FileUtils.readLines(new File("someFile.txt"));
String modifiedLine = null;
int index = 0;
for (String line : lines) {
String[] categoryFromLine = line.split(colon);
if (givenCategory.equalsIgnoreCase(categoryFromLine[0])) {
modifiedLine = new StringBuilder().append(pattern).append(colon).append(givenCategory).append(colon).toString();
break;
}
index++;
}
if (modifiedLine != null) {
lines.set(index, modifiedLine);
FileUtils.writeLines(new File("someFile.txt"), lines);
}
} catch (IOException e1) {
// do something
}