当前位置: 首页 > 面试题库 >

扫描程序仅读取文件名,而仅读取其他文件

华谭三
2023-03-14
问题内容

我正在尝试实现基本的词法分析器。目前,我在文件解析方面陷入困境。

public ArrayList<Token> ParseFile () {

    int lineIndex = 0;
    Scanner scanner = new Scanner(this.fileName);

    while (scanner.hasNextLine()) {

        lineIndex++;
        String line = scanner.nextLine();

        if (line.equals(""))
        continue;

        String[] split = line.split("\\s"); 
        for (String s : split) {
        if (s.equals("") || s.equals("\\s*") || s.equals("\t"))
        continue;
        Token token = new Token(s, lineIndex);
        parsedFile.add(token);

        }
    }
    scanner.close();
    return this.parsedFile;
}

这是我的栏位,称为“ p ++。ppp”

#include<iostream>

using namespace std ;

int a ;
int b ;

int main ( ) {

    cin >> a ;
    cin >> b ;

    while ( a != b ) {
        if ( a > b )
            a = a - b ;
        if ( b > a )
            b = b - a ;
    }

    cout << b ;

    return 0 ;
}

解析文件时,我得到:Error, token: p++.ppp on line: 1 is not valid但是p ++。ppp是文件名!

同样,当我调试时,它读取文件名,然后scanner.hasNextLine()退出。我想念什么?


问题答案:

您误解了的API
Scanner。从文档的Scanner(String)构造函数:

构造一个新的Scanner,该扫描器生成从指定字符串扫描的值。

参数:
-一个字符串,扫描

这不是文件名-只是一个字符串。

您应该改用Scanner(File)构造函数-或者更好的是,Scanner(File, String)构造函数也要指定编码。例如:

try (Scanner scanner = new Scanner(new File(this.fileName), "UTF_8")) {
    ...
}

(请注意使用try-with-resources语句,以便扫描仪自动关闭。)



 类似资料:
  • 问题内容: 我正在玩Scanner类,以进行学习,并且我使用它来读取非常大的文件(大约60.000行,大约不使用Reader类),并且在大约400行后停止读取。我是否必须在Scanner的构造函数中使用Bufferedreader还是问题?我想知道为什么会这样。谢谢。我的代码是输出所有行的常用代码。 问题答案: 此问题通常在64位计算机上或文件大小大于1-2 GB的文件中更常见,并且与堆空间无关。

  • 我试图通过使用命令“java postfix 错误: 请在java.util.scanner.throwfor(未知源) 在java.util.scanner.next(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.sca

  • 问题内容: 我只想读取文本文件的第一行并将该第一行放在字符串数组中。 这就是我所拥有的,但是它读取了整个文件。 myTextFile中的ex文本: 问题答案: 如果我了解你,那

  • 问题内容: 使用扫描程序对象从文本文件读取时,我希望它跳过文件的第一行。我将如何做到这一点? 问题答案: 只需在while循环之前使用即可。如JavaDoc中所述,这将跳过第一行。 还有关于您的命名的注释。Java语言具有广泛接受的约定。类名总是以大写字母开头,变量名总是以小写字母开头(常量除外,但现在不必担心)。在这里阅读更多。

  • 问题内容: 我正在为具有许多Flash文件的网站制作Greasemonkey脚本。我想对闪存进行哈希处理,问题是闪存文件最大为10 MB。 这很慢;我希望只能获取要散列的前80KB。最终结果将是一种将某些包含有害内容的Flash文件列入黑名单的简便方法。我的脚本如何仅抓取文件的前80 KB(或大约80 KB)? 问题答案: 发送的头在你的AJAX请求。 例如: (对于与目标页面位于同一域中的文件。

  • 实际上,我不确定是否有可能强制其他应用程序从返回所需字节的Java进程中读取文件,而不是从磁盘中读取文件,所以首先,这些信息可能会有所帮助。 你也可以忽略强迫的想法!我是否可以从我的java应用程序中打开其他应用程序,例如Adobe Acrobat Reader,并将字节注入其中,而不是单独打开它并用它读取pdf文件? 如果可能的话,有人能解释一下吗?我在网上搜索了太多,但没有找到答案。 你可能还