因此,我正在关注有关Udacity的Android应用开发课程,我很困惑。 以下函数返回JSON,但我不了解分隔符(“ \ A”)的用法。
public static String getResponseFromHttpUrl(URL url) throws IOException {
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = urlConnection.getInputStream();
Scanner scanner = new Scanner(in);
scanner.useDelimiter("\\A");
boolean hasInput = scanner.hasNext();
if (hasInput) {
return scanner.next();
} else {
return null;
}
} finally {
urlConnection.disconnect();
}
}
那么\ A分隔符的作用是什么?它是如何工作的?
答案 0 :(得分:2)
useDelimiter(String pattern)
方法使用正则表达式模式作为参数。
正则表达式模式在Pattern
类的javadoc中被记录。
Boundary matchers块中列出了\A
模式:
\A
-输入的开头
这基本上指定没有定界符,因此next()
方法将读取整个输入流。
问题代码与使用Apache Commons IO库的以下代码等效:
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
String content = IOUtils.toString(urlConnection.getInputStream(), Charset.defaultCharset());
return (content.isEmpty() ? null : content);
} finally {
urlConnection.disconnect();
}