在java中的行前面附加一个字符串?

时间:2015-03-25 09:10:17

标签: java android

我在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();
    }


}

请帮忙!

1 个答案:

答案 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
    }