为什么我用JAVA编写的这个程序不能实现从网上下载一张图片并保存到电脑上呢?请各位高手指教!
程序如下:packageurl;importjava.net.*;importjava.io.*;publicclassDownloadphoto{staticStrin...
程序如下:
package url;
import java.net.*;
import java.io.*;
public class Downloadphoto
{
static String str="http://www.gdut.edu.cn/newgdut/images/8.gif";
static URL url;
public static void main(String args[])
{
try
{
url=new URL(str);
DataInputStream in=new DataInputStream(url.openStream());
FileOutputStream out=new FileOutputStream("d:\\downloadphoto.gif");
byte b[]=new byte[in.available()];
in.read(b);
out.write(b);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch(IOException e){}
}
} 展开
package url;
import java.net.*;
import java.io.*;
public class Downloadphoto
{
static String str="http://www.gdut.edu.cn/newgdut/images/8.gif";
static URL url;
public static void main(String args[])
{
try
{
url=new URL(str);
DataInputStream in=new DataInputStream(url.openStream());
FileOutputStream out=new FileOutputStream("d:\\downloadphoto.gif");
byte b[]=new byte[in.available()];
in.read(b);
out.write(b);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch(IOException e){}
}
} 展开
2个回答
展开全部
朋友我还是告诉你思路先:用流的方法,先获取地址,再用 URLConnection 函数获取输入流,有了输入流,之后把数据弄进输出流里。代码如下
public static void main(String[] args) {
Scanner s=new Scanner(System.in);//在显示面板上手动输入的函数
int k=0;//配合输出数据用的
System.out.println("请你输入下载地址");
String dz=s.nextLine()://地址如:http...的,把输入的数据放进DZ变量里
URL url=new URL(dz);
URLConnection c=url.openConnection();//返回一个Connection对象。
InputStream in=c.getInputStream();//读取的输入流。
String fname = url.getFile().substring(url.getFile().lastIndexOf("/") + 1);//
"这是一个网站"http://www.111.com/kk/1.mp3",url.getFile().lastIndexOf("/") + 1;这句意思是到网站最后一个"/",根据上面的网址/1.mp3,后面再加一位,结果就是1.mp3,它作用是在此字符串中最右边出现的指定子字符串的索引(数字)。
substring这个函数是可以从字符串第几个数字开始并返回一个新的字符串。
这句话的意思是:lastIndexOf("/")+1找到最后一个像"/"字符,然后移一位在哪个位置设一个索引(数字),然后substring是根据这个索引(数字)找到后面那些字符串。
String xxx=fname.substring(fname .lastIndexOf(".")+1);//取文件的后续名(.mp3、.rmvb)之类
System.out.println("输入文件名:");
String bcwj=s.nextLine();
FileOutputStream out=new FileOutputStream("D:/m/"+bcwj+"."+xxx);
System.out.println("开始下载");
while((k=in.read())>=0){
out.write(k);
out.flush();
}
out.close();
in.close();
System.out.println("下载完成");
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);//在显示面板上手动输入的函数
int k=0;//配合输出数据用的
System.out.println("请你输入下载地址");
String dz=s.nextLine()://地址如:http...的,把输入的数据放进DZ变量里
URL url=new URL(dz);
URLConnection c=url.openConnection();//返回一个Connection对象。
InputStream in=c.getInputStream();//读取的输入流。
String fname = url.getFile().substring(url.getFile().lastIndexOf("/") + 1);//
"这是一个网站"http://www.111.com/kk/1.mp3",url.getFile().lastIndexOf("/") + 1;这句意思是到网站最后一个"/",根据上面的网址/1.mp3,后面再加一位,结果就是1.mp3,它作用是在此字符串中最右边出现的指定子字符串的索引(数字)。
substring这个函数是可以从字符串第几个数字开始并返回一个新的字符串。
这句话的意思是:lastIndexOf("/")+1找到最后一个像"/"字符,然后移一位在哪个位置设一个索引(数字),然后substring是根据这个索引(数字)找到后面那些字符串。
String xxx=fname.substring(fname .lastIndexOf(".")+1);//取文件的后续名(.mp3、.rmvb)之类
System.out.println("输入文件名:");
String bcwj=s.nextLine();
FileOutputStream out=new FileOutputStream("D:/m/"+bcwj+"."+xxx);
System.out.println("开始下载");
while((k=in.read())>=0){
out.write(k);
out.flush();
}
out.close();
in.close();
System.out.println("下载完成");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询