学习内容:
1.流下载
2.读取XML文件在控制台
一. 使用流下载数据
思路:1.获取URL地址(填入地址),通过url.open方法获得HttpURLConnetion对象
2.通过HttpURLConnetion对象获得输入流
3.构造空白文档对象File(设置下载文件名),file.crateNewFile()创建空白文档
4.构造输出流写入到file文档
5.创建byte[]数据存储单位 注:正常1G 1024单位,超过1G 1024*4
6.通过while循环判断输入流!=-1,让输出流写入byte中
7.关闭相应流
参考代码:
public class Text {
public static void main(String[] args) {
InputStream is =null;
OutputStream os =null;
try {
//通过URL获取下载路径
URL url = new URL("http://localhost:8080/Liu/tupian.png");
//通过url.openConnection获取到HttpURLConnection对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//通过HttpURLConnection获取输入流
is = conn.getInputStream();
//构造空的下载文档并创建
File file = new File("学习文件.png");
file.createNewFile();
//构造输出流并写入到文档中
os = new FileOutputStream(file);
//构造字节数组读取信息
byte[] bb = new byte[1024];
//判断条件当输入流没值(等于负一的时候),就让输出流停止工作
while (is.read(bb) != -1) {
//写入文档及刷新
os.write(bb);
os.flush();
}
} catch (Exception e) {
// TODO: handle exception
}finally{
//关闭资源
try {
if (os != null) {
os.close();
}
if (is != null) {
is.close();
}
} catch (Exception e2) {
// TODO: handle exception
}
}
}
}
二.读取XML文件在控制台
思路:主类:
1.获取URL地址,通过URL地址获得HttpURLConnection
2.HttpURLConnection获得输入流
3.获得工厂函数factory
SAXParserFactory factory = SAXParserFactory.newInstance();
4.通过factory获得parser
SAXParser parser = factory.newSAXParser();
5.通过parser获得XMLReader
XMLReader reader = parser.getXMLReader();
6.通过reader设置监听器
reader.setContentHandler(new JianTing());
7.通过reader设置输入流
reader.parse(new InputSource(is));
监听器类:
1.创建一个新类继承DefaultHandler
2.重写characters()方法
参考代码:
主类:
public class MyDemo {
public static void main(String[] args) {
InputStream is =null;
//监听
try {
//获取URL地址
URL url = new URL(
"https://files.cnblogs.com/files/guoxinkun/work.xml");
//通过url.open获取Connection
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//通过conn获取输出流
is = conn.getInputStream();
//获得工厂函数
SAXParserFactory factory = SAXParserFactory.newInstance();
//通过函数调用SAXParser对象
SAXParser parser = factory.newSAXParser();
//通过parser获取reader
XMLReader reader = parser.getXMLReader();
//通过reader设置监听器
reader.setContentHandler(new JianTing());
//通过reader.parse设置输入流
reader.parse(new InputSource(is));
} catch (Exception e) {
// TODO: handle exception
}
}
}
监听类:
public class JianTing extends DefaultHandler{
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String neirong =new String(ch,start,length);
System.out.println(neirong);
}
}