java - 在.txt文件中的特定位置读取和写入文本

时间:2016-07-14 13:48:43

标签: java io nio

我对Java中不同的读写方法的数量感到非常困惑,并且无法找到符合我需求的方法。

我有一个看起来像这样的文本文件:

CharName{
    Sheet{
        Vitality{
            Short=LP,Name=Life,Base=1000,Equip=0,Buff=0;
            Short=LPR,Name=Life regen per sec,Base=50,Equip=0,Buff=0;
        }
        Magic{
            Short=MP,Name=Mana,Base=100,Equip=0,Buff=0;
            Short=MPR,Name=Mana regen per sec,Base=5,Equip=0,Buff=0;
        }
    }
}

它实际上要大得多,但这足以说明我的意思。

我想创建一个基本上看起来像getInfoFromCharFile(sectionName, categoryName, rowNum, tagName)的函数。

示例:getInfoFromCharFile(Sheet, Vitality, 2, Name)因此它给了我 50 ),同样也写了saveInfoToCharFile(sectionName, categoryName, rowNum, tagName, newValue)

最重要的是,我试图证明,当其中一个文件被读取时,我有一个简单的方法,即将其加载到' (系统地阅读所有内容) - 这样的事情就像"找到;找到活力;把所有东西都放在下一个{和}之间;分为; ;。;找到魔术;把所有东西都放在下一个{和};之间。等等等等。 我知道如何进行吐痰和处理,但我怎样才能将其添加到' loading'大括号之间的一切?

注意:我确实阅读过,观看了很多关于Google的内容,但是找不到任何让我了解如何解决问题的内容。我已经好几个星期了!我曾经只是使用属性,但这真的很难实现。

我会告诉你代码加载'在那个解决方案中,但是最后一次我不得不编辑它,它花了我几个小时才能再次理解它 - 所以是的,我猜的代码不是很好,这就是为什么我要这样替换它。

1 个答案:

答案 0 :(得分:1)

我认为有两种方法:

  1. 艰难的道路: 您坚持使用自定义格式。在这种情况下,您可能必须使用正则表达式来读取文件,您必须准备好处理格式错误的输入等。 您可以使用Matcher或Scanner进行匹配。如果您喜欢冒险,可以通过逐个阅读字符来进行基于状态的解析。 我实际上前一段时间做过something like that,也许你可以从源头中获取灵感......甚至可以使用它,上次我检查过,它有效。 (特别是JONReader可能有用。

  2. 简单方法: 使用像XML,JSON这样的标准格式(你的格式已经非常接近了!),甚至是一些CSV的东西。那里有很多可靠的解析器,它可能变得像" charname.getMagic()"一样容易,而不用担心细节。

  3. 如果您决定使用JSON,那么对于您的方法而言,这似乎是最合适的事情,我建议您查看minimal-jsonJackson,具体取决于您希望如何使用它。< / p>