为什么总抛出空指针异常,请各位大师帮我改进一下,我将不胜感激
来源:互联网 发布:电脑屏幕扫描软件 编辑:程序博客网 时间:2024/05/02 02:14
package org.cjit.download.student;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import java.net.HttpURLConnection;import java.net.ProtocolException;import java.net.URL;public class MultiThreadDownloadFile {public static String getFileName(String path) {return path.substring(path.lastIndexOf("/") + 1);}public static void downloadFile(String path, int threadSize)throws Exception {URL url = new URL(path);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");// connection.setConnectTimeout(5*1000);int fileLength = connection.getContentLength(); // 获取文件的长度String decodePath = java.net.URLDecoder.decode(path, "GBK");File saveFile = new File("F:\\" + getFileName(decodePath));RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");accessFile.setLength(fileLength); // 开始的时候就设定好要写入的文件的大小accessFile.close();int block = 0; // 记录每个线程下载文件的大小if ((fileLength / threadSize) == 0) {block = fileLength / threadSize;} else {block = fileLength / threadSize + 1;}for (int threadID = 0; threadID < threadSize; threadID++) {new DownloadThread(url, saveFile, block, threadID).start();}}private static final class DownloadThread extends Thread {private URL url;private File saveFile;private int block;private int threadID;public DownloadThread(URL url, File saveFile, int block, int threadID) {this.block = block;this.saveFile = saveFile;this.threadID = threadID;this.url = url;}@Overridepublic void run() {int startPosition = threadID * block;int endPosition = (threadID + 1) * block - 1;HttpURLConnection connection = null;RandomAccessFile accessFile = null;InputStream inputStream = null;try {accessFile = new RandomAccessFile(saveFile, "rwd");inputStream = connection.getInputStream();accessFile.seek(startPosition); // 设置从什么位置开始写入数据connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");// connection.setConnectTimeout(5*1000);connection.setRequestProperty("Range", "bytes=" + startPosition+ "-" + endPosition);// 指定从网络文件的开始位置到结束位置下载。byte[] buffer = new byte[1024];int length = 0;while ((length = inputStream.read(buffer)) != -1) {accessFile.write(buffer, 0, length);}System.out.println("线程id:" + threadID + "下载完成");} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try { inputStream.close(); if(accessFile!=null){ accessFile.close();}} catch (IOException e) {e.printStackTrace();}}}}public static void main(String[] args) {String path = "http://zhangmenshiting.baidu.com/data/music/5789992/%E8%8D%B7%E5%A1%98%E6%9C%88%E8%89%B2.mp3"; try {MultiThreadDownloadFile.downloadFile(path, 3);} catch (Exception e) { e.printStackTrace();}}}
- 为什么总抛出空指针异常,请各位大师帮我改进一下,我将不胜感激
- 各位高手帮忙看一下我的电脑配置单,请大虾多提建议,小弟不胜感激!
- 请内行人给指点一下,不胜感激
- 哪位高手帮我制作一下以下代码 在下不胜感激 跪求
- 志存高远不如脚踏实地,如能救我将不胜感激
- jrtplib传输:请问各位高手,我想将下面的程序改成在vc下能运行的,需要怎么修改,不胜感激!!望有成功者留一个联系方式给我,我做毕设,想请教一下!不胜感激!
- 各位帮帮我,为什么在网复制的文字,添加到我的数据库,添加出错误呢,请大师帮看看
- 新手上路:/>前几天在编写一个中序遍列的程序时,出现以下的错误。请各位版主及大师,帮我看一下。希望批评指正!!!
- 迷惘中...请各位大虾驻足,为晚辈指点迷津,不胜感激!
- java 请JAVA高手回答一下小弟这个简单的问题 不胜感激啊
- 我的网站有什么毛病?请各位帮我挑一下!
- 请各位高手帮我改一下我这个文件(如能帮助解决高分)
- 有谁能给我讲一下网页制作中的字体和字号的概念啊????不胜感激
- servlet抛出空指针异常
- birt报表中设置数据集sql的问题,希望有人帮我解决这个疑问,不胜感激!
- 请帮我分析一下为什么我的计算机这样慢
- 请各位大师指点!!!
- 请帮我选择一下 多谢
- Oracle ORA-01045错误解决方法
- SQL Server 动态SQL使用(处理输入和输出变量)
- 读故事悟人生
- 索引(转自http://blog.163.com/owx8012@126/blog/static/3844624620099152102133/)
- 算法与数据结构课程中的c++实现的顺序表和链表
- 为什么总抛出空指针异常,请各位大师帮我改进一下,我将不胜感激
- windows 7 welcome screen twicks
- 操作系统概念辨析
- .bash_profile & .bashrc
- 能否手工安装Win7的NVIDIA显卡驱动到XP
- minix3安装ssh服务
- VB.NET 串口访问之一
- 查询系统是否安装了JDK
- container_of 理解