汉得第二次考核答案整理(通信,IO,文件等)
1, (8 分 ) 使用程序从网上下载 pdf, 网址为
http://files.saas.hand-china.com/java/target.pdf,保存在本地,
编程时使用带缓冲的读写,将需要保证保存后的 pdf 文件能正常
打开.
解析:只能用字节流来读写,用字符流写入pdf后 文件打不开,程序还与待优化
 package com.fansi.com;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
 public class Url_File {
     public static void main(String[] args) {
         try {
             URL url = new URL("http://files.saas.hand-china.com/java/target.pdf");
             URLConnection conn =  url.openConnection();
             InputStream is = conn.getInputStream();
             BufferedInputStream bis = new BufferedInputStream(is);
             File file = new File("target.pdf");
             FileOutputStream fos = new FileOutputStream(file);
             BufferedOutputStream bos = new BufferedOutputStream(fos);
             ];
             ){
                 bos.write(b);
             }
             bos.close();
             fos.close();
             bis.close();
             is.close();
         } catch (MalformedURLException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }
2, (8 分)实现一个 Socket 服务器端和一个 Socket 客户端,先启动服
务器端,当客户端连接上来后,将第一题中得到的 target.pdf 通过
Stream 发送给客户端,客户端接收并保存为 pdf 文件,并保证 pdf
文件能被正常打开.
服务器端代码,Server.java (字节流)
 package com.fansi;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.net.ServerSocket;
 import java.net.Socket;
 public class Server {
     public static void main(String[] args) {
         try {
             ServerSocket serversocket = );
             while(true){
                 Socket socket = serversocket.accept();
                 System.out.println("有客户端连上了");
                 File file = new File("down.pdf");
                 FileInputStream fis = new FileInputStream(file);
                 BufferedInputStream bis = new BufferedInputStream(fis);
                 BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
                 ];
                 ){
                     bos.write(b);
                 }
                 bos.close();
                 bis.close();
                 fis.close();
             }
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }
客户端代码,Client.java(字节流)
 package com.fansi;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.net.Socket;
 import java.net.UnknownHostException;
 public class Client {
     public static void main(String[] args) {
         try {
             Socket socket = );
             BufferedInputStream bis =new BufferedInputStream(socket.getInputStream());
             File file = new File("new.pdf");
             FileOutputStream fos = new FileOutputStream(file);
             BufferedOutputStream bos = new BufferedOutputStream(fos);
             ];
             ){
                 bos.write(b);
             }
             bos.flush();
             bos.close();
             fos.close();
             bis.close();
         } catch (UnknownHostException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }
3, (8 分)
Sina 股票数据接口,以大秦铁路(股票代码:601006)为
例,如果要获取它的最新行情,只需访问新浪的股票数据
接口:http://hq.sinajs.cn/list=sh601006 这个 url 会返回
一串文本,例如:
var	 hq_str_sh601006="大秦铁路,	 27.55,	 27.25,	 26.91,	
27.55,	26.20,	26.91,	26.92,
22114263,	589824680,	4695,	26.91,	57590,	26.90,	14700,	
26.89,	14300,
26.88,	 15100,	 26.87,	 3100,	 26.92,	 8900,	 26.93,	 14230,	
26.94,	25150,	26.95,	15220,	26.96,	2008-01-11,	15:05:32";
这个字符串由许多数据拼接在一起,不同含义的数据用逗
号隔开了,顺序号从 0 开始。
0:”大秦铁路”,股票名字;name
1:”27.55″,今日开盘价;open
2
2:”27.25″,昨日收盘价;close
3:”26.91″,当前价格;current
4:”27.55″,今日最高价;high
				 5:”26.20″,今日最低价;low
编程访问 http://hq.sinajs.cn/list=sz300170 ,解释所得到的数
据,并将生成 XML 数据文件和 JSON 文件,并保存到本地,如:
xml 数据:
xxxxx
< open >xxxxx
……
json 数据:
					 {name:”xxx”,open:xxxx……}
Json_Xml.java (字符流)
 package com.fansi;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.Result;
 import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import com.google.gson.JsonObject;
 public class Json_Xml {
     public static void main(String[] args) {
         try {
             URL url = new URL("http://hq.sinajs.cn/list=sz300170");
             URLConnection conn = url.openConnection();
             InputStreamReader bis = new InputStreamReader(conn.getInputStream());
             BufferedReader br = new BufferedReader(bis);
             String line;
             String[] res = ];
             while((line=br.readLine())!=null){
                System.out.println(line);
                res = line.split(",");
             }
 //            for(int i=0;i<res.length;i++){
 //                System.out.println(res[i]);
 //            }
             res[]=res[].substring();
             //System.out.println(res[0]);
             br.close();
             bis.close();
             //-----------------json创建
             JsonObject object = new JsonObject();
             ]);
             ]);
             ]);
             ]);
             ]);
             ]);
             //System.out.println(object.toString());
             File f1 = new File("json.txt");
             FileOutputStream fis1 = new FileOutputStream(f1);
             OutputStreamWriter osw1 = new OutputStreamWriter(fis1, "utf-8");
             BufferedWriter bw1 = new BufferedWriter(osw1);
             bw1.write(object.toString());
             bw1.close();
             osw1.close();
             fis1.close();
             //---------------------------xml的写
             try {
                 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                 DocumentBuilder builder = factory.newDocumentBuilder();
                 Document document = builder.newDocument();
                 Element root = document.createElement("hand");
                 Element r1 = document.createElement("name");
                 r1.setTextContent(res[]);
                 root.appendChild(r1);
                 Element r2 = document.createElement("open");
                 r2.setTextContent(res[]);
                 root.appendChild(r2);
                 Element r3 = document.createElement("current");
                 r3.setTextContent(res[]);
                 root.appendChild(r3);
                 Element r4 = document.createElement("high");
                 r4.setTextContent(res[]);
                 root.appendChild(r4);
                 Element r5 = document.createElement("low");
                 r5.setTextContent(res[]);
                 root.appendChild(r5);
                 document.appendChild(root);
                 TransformerFactory transformerFactory = TransformerFactory.newInstance();
                 Transformer transformer = transformerFactory.newTransformer();
                 transformer.transform(new DOMSource(document), new StreamResult(new File("xml.txt") ));
             } catch (ParserConfigurationException e) {
                 e.printStackTrace();
             } catch (TransformerConfigurationException e) {
                 e.printStackTrace();
             } catch (TransformerException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
         } catch (MalformedURLException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }
汉得第二次考核答案整理(通信,IO,文件等)的更多相关文章
- 近5年常考Java面试题及答案整理(三)
		上一篇:近5年常考Java面试题及答案整理(二) 68.Java中如何实现序列化,有什么意义? 答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写 ... 
- 近5年常考Java面试题及答案整理(二)
		上一篇:近5年常考Java面试题及答案整理(一) 31.String s = new String("xyz");创建了几个字符串对象? 答:两个对象,一个是静态区的"x ... 
- 蓝桥杯java历年真题及答案整理1~20.md
		蓝桥杯java历年真题及答案整理(闭关一个月,呕心沥血整理出来的) 1 算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种.如:给定 A.B.C三个不同的字符,则结果为:A ... 
- 2018年最新Java面试题及答案整理(持续完善中…)
		2018年最新Java面试题及答案整理(持续完善中…) 基础篇 基本功 面向对象特征 封装,继承,多态和抽象 封装封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内 ... 
- 常见JVM面试题及答案整理
		常见JVM面试题及答案整理 1.什么情况下会发生栈内存溢出 2.JVM内存模型 3.JVM内存为什么要分成新生代,老年代,持久代.新生代中为什么要分为Eden和Survivor. 3.1共享内存区划分 ... 
- C#基础第二天-作业答案-九九乘法表-打印星星
		题一:九九乘法表的答案 //正三角 ; i < ; i++) { ; j <= i; j++) { Console.Write("{0}*{1}={2} ", j, i ... 
- java socket通信-传输文件图片--传输图片
		ClientTcpSend.java client发送类 package com.yjf.test; import java.io.DataOutputStream; import java.io ... 
- 【整理】C#文件操作大全(SamWang)
		[整理]C#文件操作大全(SamWang) 文件与文件夹操作主要用到以下几个类: 1.File类: 提供用于创建.复制.删除.移动和打开文件的静态方法,并协助创建 FileStream 对象. msd ... 
- 50道Redis面试题及答案整理,史上最全!
		在网上看到有关Redis的50道面试题,但是没有给出答案,之前我也在寻找这份Redis面试题的答案,今天特地把答案分享出来. 花了大量时间整理了这套Redis面试题及答案,希望对大家有帮助哈~ 弄明白 ... 
随机推荐
- JVM内存回收对象及引用分析
			自动垃圾回收是Java相较于C++的一个重要的特点,想了解JVM的垃圾回收机制,首先我们要知道垃圾回收是回收什么地方的垃圾,我在我的上一篇博客<JVM内存区域划分>里面有写到JVM里面的内 ... 
- webpy:页面下载的三种实现方式
			python: 1.import urllib urlretrieve() 方法直接将远程数据下载到本地. >>> help(urllib.urlretrieve)Help on f ... 
- python Sina微博自动转发带抽奖字样的微博,添加关注,取消关注
			项目地址:https://github.com/chengshuyi/SinaWeibo 具有的功能 转发带抽奖字样的微博并可以@相应数量的好友 提取关注并添加关注 取消关注 获取粉丝列表 
- hdu 1175
			#include <iostream> #include <string> #include <stdio.h> using namespace std; int ... 
- js动态新增组合Input标签
			var x = 1; function addlink() { var linkdiv = document.getElementById("add1_0"); if (linkd ... 
- 在ASP.NET中使用一般处理程序生成验证码
			如果期望一般处理程序(ashx)处理Session,必须实现[System.Web.SessionState]命名空间下的[IRequiresSessionState]接口. asp.net中的验证码 ... 
- 让sublime支持gbk常用编码
			Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦.不过Sublime Package Control所以供的插件可以让Subli ... 
- 【转】深入理解Java内存模型(三)——顺序一致性
			数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代码 ... 
- DOM基础之“寻找”子节点
			今天学习了JS中的DOM的内容,虽然小菜的理解不深,但希望能够记录下来,慢慢一点一点的进步,有更深的理解了,再回来补充. 首先,关于DOM的概念: 1.概念:DOM = document(文档)Obj ... 
- 【C++学习之路】派生类的构造函数(二)
			二.有内嵌对象的派生类 1.一般来说,我们会这样定义构造函数 student( int i, string nam, int pid, string pnam, int sid) : person( ... 
