如何使用扫描仪逐字符读取输入文件?

Posted

技术标签:

【中文标题】如何使用扫描仪逐字符读取输入文件?【英文标题】:How to read an input file char by char using a Scanner? 【发布时间】:2012-11-02 10:21:18 【问题描述】:

我必须使用Scanner,那么我可以使用nextChar() 代替nextLine() 的方法吗?

谢谢!

【问题讨论】:

【参考方案1】:

如果您必须使用Scanner(如您在编辑中所述),请尝试以下操作:

myScanner.useDelimiter("(?<=.)");

现在myScanner 应该逐个字符地读取。


您可能想改用BufferedReader(如果可以的话) - 它有一个读取单个字符的read 方法。例如,这将读取并打印文件的第一个字符:

BufferedReader br = new BufferedReader(new FileReader("somefile.txt"));
System.out.println((char)br.read());
br.close();

【讨论】:

【参考方案2】:

使用String.toCharArray() 将行拆分为字符。

【讨论】:

【参考方案3】:

如果您致力于使用Scanner,那么您可以使用next(String pattern)

String character = scanner.next(".");

上面返回一个长度为 1 的String——也就是说,你得到一个字符,但是作为一个字符串。

【讨论】:

【参考方案4】:

您可以转换为字符数组。

import java.io.*;
import java.util.Scanner;


public class ScanXan 
    public static void main(String[] args) throws IOException 
        Scanner s = null;
        try 
            s = new Scanner(new BufferedReader(new FileReader("yourFile.txt")));
            while (s.hasNext())
            
               String str = s.next(); 
                char[] myChar = str.toCharArray();
                // do something
            
         finally 
            if (s != null) 
                s.close();
            
        
    

【讨论】:

以上是关于如何使用扫描仪逐字符读取输入文件?的主要内容,如果未能解决你的问题,请参考以下文章

C++中怎么逐行读取数据

如何逐行读取文件并分隔行组成部分?

如何逐行读取批处理文件中多余字符的文本文件?允许限制行长。(Windows,批处理脚本)

C++文件读写操作逐字符读取文本和逐行读取文本

如何使用扫描仪在java中将输入作为带有空格的字符串

c语言逐行读取文件?