Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过字符和行从文本文件中读取_Java_File Io - Fatal编程技术网

Java 通过字符和行从文本文件中读取

Java 通过字符和行从文本文件中读取,java,file-io,Java,File Io,对于一个非常基本的RPG(目前是自上而下的漫游游戏),我想做一个方法,读取一个“保存”文件并将其存储在内存中(保存在后面)。我希望这个保存文件是用户友好的,因为它有一种方法可以使某些行不被该方法读取,这样我就可以把修改它的指令等等。目前,计划是不让它读取前面有%的行,但如果%导致问题,则可能会改变 我希望在一个压缩块中保存格式本身——一个或两个字母数字字符表示单个“平铺”的内容。我不希望每个屏幕区域都有169行,我宁愿将它们放在13*13的压缩块中(同样,为了方便用户) 从本质上说,我怎么能两者

对于一个非常基本的RPG(目前是自上而下的漫游游戏),我想做一个方法,读取一个“保存”文件并将其存储在内存中(保存在后面)。我希望这个保存文件是用户友好的,因为它有一种方法可以使某些行不被该方法读取,这样我就可以把修改它的指令等等。目前,计划是不让它读取前面有%的行,但如果%导致问题,则可能会改变

我希望在一个压缩块中保存格式本身——一个或两个字母数字字符表示单个“平铺”的内容。我不希望每个屏幕区域都有169行,我宁愿将它们放在13*13的压缩块中(同样,为了方便用户)

从本质上说,我怎么能两者兼得呢 a) 检测行是否以%开头 b) 如果是,请跳到下一行 c) 如果不是,则一次读取两个字符以复制到字符串数组 d) 跳过空行


我理解基本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