java - 扫描仪在两个系统上的行为不同
问题描述
我编写了一个程序,它逐字读取文件,并计算每个单词出现的次数。我正在使用扫描仪执行此操作。当我尝试在不同的机器上运行我的代码时,问题就出现了。在我的 Windows 10 机器上,代码完美地运行在整个文件中,但是当代码在我的 MacBook 上运行时,扫描仪在中途停止读取文件。我已经包含了循环通过下面文件的代码部分。
Scanner s = new Scanner(theFile);
List<String> words = new LinkedList<>();
while (s.hasNextLine())
{
String word s.next().replaceAll("\\p{Punct}", "");
words.add(word.toLowerCase());
}
正如我所说,在 Windows 上,会读取整个文件,但在 Mac 上,只会读取很小的一部分。此外,我使用的是 SVN 存储库,并确保代码以及正在读取的文件是相同的。
解决方案
我最终从使用扫描仪切换到使用 BufferedReader。我没有阅读每个单词,而是一次阅读一整行,然后将一行拆分为单个单词。仍然不确定为什么 Scanner 无法在两个平台上正常工作,但这种方法给了我所需的结果。
推荐阅读
- laravel - SQLSTATE [HY000] Laravel 8 中的外键约束格式错误
- python - Linux 上的正文电子邮件 PYTHON 中的图片
- firebase - Firestore 文档数据返回未定义
- xml - 为什么我的 XML 文件在 EC2 实例上不起作用
- css - 闪亮的页脚位置
- sql - 如何在 Tableau 中制作仪表板日期参数,默认为本月的第一天到现在?
- django - Django 中并发 Celery 工作人员的死锁
- c# - 无论分支如何,如何使用 libgit2sharp 获取所有 git 提交?
- android - 从firebase检索gif图像并返回相同的gif图像,如何解决这个问题?
- html - 在关闭 Oracle Jet 对话框时,页面滚动条向下,焦点指向表格中间