我试图用带空格的扫描仪读取,我想读甚至空格。 例如"约翰史密斯"阅读"约翰史密斯"。
我的代码如下: 当它到达john之后的空间时,它只是挂起而且不再读取。 任何帮助将不胜感激。
Scanner in = new Scanner(new InputStreamReader(sock.getInputStream()));
String userName = "";
while (in.hasNext()) {
userName.concat(in.next());
}
答案 0 :(得分:1)
Scanner.next()
返回由空格分隔的下一个标记。如果您想要阅读整行以及空格,请改用nextLine()
:
String userName = in.nextLine();
答案 1 :(得分:0)
Scanner scan = new Scanner(file);
scan.useDelimiter("\\Z");
String content = scan.next();
或
private String readFileAsString(String filePath) throws IOException {
StringBuffer fileData = new StringBuffer();
BufferedReader reader = new BufferedReader(
new FileReader(filePath));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
}
reader.close();
return fileData.toString();
}
答案 2 :(得分:0)
当我们使用Scanner.next()读取令牌时,我们称之为分隔符,扫描器使用的默认分隔符为\ p {javaWhitespace} +,您可以通过调用Scanner.delimiter()来获取它。是验证Character.isWhitespace(char)的任何字符。您可以使用Scanner.useDelimiter()为扫描仪使用自定义分隔符。
如果您想将一行作为字符串使用,那么您可以使用nextLine()
,如果您已经知道输入流中下一个标记的类型,则扫描程序会为您提供方法列表{{1将令牌转换为指定的类型。有关详情,请参阅扫描人员的文档here。