Mon*_*ica 1 java java.util.scanner
我有一个扫描仪从文本文件中读取.当它到达文件中的某一行时,我希望能够调用一个方法,该方法将Scanner用作当前状态的参数 - 例如,我希望扫描程序(以及使用的文件)在它到底是什么线.
public static void createEntry(File list, int mediaTypeNum, String mediaType) throws FileNotFoundException {
Scanner mediaReader = new Scanner(list);
int occurrence = mediaTypeNum;
int scannerCounter = 0;
String match;
String title = "";
String director = "";
while (mediaReader.hasNext() && scannerCounter < occurrence) {
match = mediaReader.nextLine();
if (match.equalsIgnoreCase(mediaType)) {
scannerCounter++;
if (scannerCounter == occurrence) {
// based on type, create the media object
// createMediaObject(list, mediaReader, mediaType)
title = mediaReader.nextLine();
director = mediaReader.nextLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
createMediaObject()将有一个switch case,根据具体情况,Scanner将读取一些以下行,直到有一个空行.对于每种媒体类型,行数不同.
先感谢您!
当然,事实上,Java中的任何对象都是如此.在任何时候都不会创建对象的隐式副本.*
你需要注意的是,它Scanner具有"顺序"状态,如果你经常传递它,很容易忘记它处于什么状态.特别是如果执行条件处理,不同的执行路径可能最终将它留在不同的位置.
一个好的方法是始终在方法Javadoc中记录Scanner预期的状态以及最后留下的状态.
*这个声明有一个很大的警告:多线程.但是在这里详细讨论这个问题将是非常不合时宜的.
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |