Java 通过字符和行从文本文件中读取
对于一个非常基本的RPG(目前是自上而下的漫游游戏),我想做一个方法,读取一个“保存”文件并将其存储在内存中(保存在后面)。我希望这个保存文件是用户友好的,因为它有一种方法可以使某些行不被该方法读取,这样我就可以把修改它的指令等等。目前,计划是不让它读取前面有%的行,但如果%导致问题,则可能会改变 我希望在一个压缩块中保存格式本身——一个或两个字母数字字符表示单个“平铺”的内容。我不希望每个屏幕区域都有169行,我宁愿将它们放在13*13的压缩块中(同样,为了方便用户) 从本质上说,我怎么能两者兼得呢 a) 检测行是否以%开头 b) 如果是,请跳到下一行 c) 如果不是,则一次读取两个字符以复制到字符串数组 d) 跳过空行Java 通过字符和行从文本文件中读取,java,file-io,Java,File Io,对于一个非常基本的RPG(目前是自上而下的漫游游戏),我想做一个方法,读取一个“保存”文件并将其存储在内存中(保存在后面)。我希望这个保存文件是用户友好的,因为它有一种方法可以使某些行不被该方法读取,这样我就可以把修改它的指令等等。目前,计划是不让它读取前面有%的行,但如果%导致问题,则可能会改变 我希望在一个压缩块中保存格式本身——一个或两个字母数字字符表示单个“平铺”的内容。我不希望每个屏幕区域都有169行,我宁愿将它们放在13*13的压缩块中(同样,为了方便用户) 从本质上说,我怎么能两者
我理解基本IO,但我还没有找到一种同时按字符和行读取的方法。看看scanner类,它应该能够完成大部分工作。我会用扫描仪逐行读取,解析前两个字符,如果需要,继续。例如:
Scanner lineReader = new Scanner(new FileReader(filename));
Scanner parser;
while (scanner.hasNextLine()){
parser = new Scanner(scanner.nextLine());
if(parser.hasNext())){ //checks for blank line
String firstWord = parser.next();
if(/*Check for %*/)
continue;
else
//parse as you will
}
}
就我个人而言,我会使用
BufferedReader
将文件逐行读取到单个String
对象中,并检查内容。您可以使用巧妙命名的String.startsWith(“%”)方法检查行是否以注释字符开头,并使用String.charAt(index)
获取行中的单个字符,或者使用String.substring(start,start+2)
,如果您的字符对没有分隔,您可能不想使用第二个扫描器来解析每一行。对不起,还有一个快速问题不能保证它的主题:是否有任何方法(以一种相当简单的方式)不需要每一个与该数据交互的方法(即每一个方法)要使用throws-IOException子句吗?无法消除引发IOException
的可能性。你需要决定如何以及在哪里处理它。一种可能的方法是捕获异常并抛出未检查的RuntimeException
。