一、StringReader类简介
StringReader类是Java IO的一部分,用于从字符串中读取字符流。该类提供了几种用于读取字符流的方法。使用StringReader类可以方便地从字符串中读取字符而无需进行文件操作。
二、StringReader类的创建和基本方法
要使用StringReader类,需要先创建一个StringReader对象。StringReader对象可以使用String类型的参数进行初始化,该参数会转化为一个字符流。
String s = "Hello, World!"; StringReader reader = new StringReader(s);
使用StringReader读取字符时,常用的方法有read()和read(char[] cbuf, int off, int len)方法。其中,read()方法每次读取一个字符,返回字符的ASCII码值;read(char[] cbuf, int off, int len)方法读取len个字符,并将其存储在cbuf数组中,从off位置开始存储。如果读取到流的末尾,则返回-1。
String s = "Hello, World!"; StringReader reader = new StringReader(s); int c; while ((c = reader.read()) != -1) { // 打印读取到的ASCII码值 System.out.println(c); }
三、使用StringReader读取HTML标签
在读取HTML标签时,需要考虑到标签的特殊性。可以使用read(String str, int off, int len)方法,该方法将读取len个字符并存储在str字符串中,从off位置开始存储。如果读取到指定的字符(如"<")或者流的末尾,则停止读取。
String s = "<h1>Hello, World!</h1>"; StringReader reader = new StringReader(s); char[] cbuf = new char[100]; int readCount = reader.read(cbuf, 0, 100); String tag = ""; for (int i = 0; i < readCount && (cbuf[i] != ' ' || cbuf[i] != '>'); i++) { tag += cbuf[i]; } System.out.println(tag);
四、使用StringReader读取XML文件
使用StringReader可以方便地读取XML文件。Java提供了一种将XML文件解析成Document对象的方法:使用DOM解析器。有了Document对象之后,就可以方便地获取节点和属性信息。下面的代码示例展示了使用DOM解析XML文件并读取其中的节点信息。
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); InputSource is = new InputSource(new StringReader(xml)); Document document = builder.parse(is); NodeList personNodes = document.getElementsByTagName("person"); for (int i = 0; i < personNodes.getLength(); i++) { Element personElement = (Element) personNodes.item(i); String id = personElement.getAttribute("id"); String name = personElement.getElementsByTagName("name").item(0).getTextContent(); String age = personElement.getElementsByTagName("age").item(0).getTextContent(); System.out.println("id:" + id + ", name:" + name + ", age:" + age); } Tom 18 Jerry 22