本文目录一览:
- 1、下载的java源代码怎么打开
- 2、java下载服务器上的文件到客户端
- 3、帮我看看这段java下载代码,文件名为中文时,报错,无法找到指定文件
- 4、Java中文件下载该怎么写代码求高手指导
- 5、我有一段java http下载的代码,但是我很多地方读不懂,帮我谢谢注释
下载的java源代码怎么打开
.class文件是java编译后的文件,它不是源代码,真正的java源代码是.java文件。
java源代码是txt格式的.java文件,用记事本就可以打开。
用eclipse打开java文件的方式是:
如果java文件是一个eclipse工程(根目录带有.project文件),用file/import/general/exist java project/(大概是)然后找到你的目录。
否则需要自己新建一个工程file/new/java project
然后把java文件拷贝到.src目录下。
.class文件是直接的编译好的文件,可以用jad把.class文件反编译成java文件,不过反编译的代码和原来的代码不一定完全一样。
java下载服务器上的文件到客户端
java编程方法下载服务器上的文件到本地客服端,代码如下:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class DownLoad {
public static void downloadFile(URL theURL, String filePath) throws IOException {
File dirFile = new File(filePath);
if(!dirFile.exists()){
//文件路径不存在时,自动创建目录
dirFile.mkdir();
}
//从服务器上获取图片并保存
URLConnection connection = theURL.openConnection();
InputStream in = connection.getInputStream();
FileOutputStream os = new FileOutputStream(filePath+"\\123.png");
byte[] buffer = new byte[4 * 1024];
int read;
while ((read = in.read(buffer)) 0) {
os.write(buffer, 0, read);
}
os.close();
in.close();
}
public static void main(String[] args) {
//下面添加服务器的IP地址和端口,以及要下载的文件路径
String urlPath = "http://服务器IP地址:端口/image/123.png";
//下面代码是下载到本地的位置
String filePath = "d:\\excel";
URL url = new URL(urlPath);
try {
downloadFile(url,filePath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
帮我看看这段java下载代码,文件名为中文时,报错,无法找到指定文件
代码一共6句,前4句没问题,运行下载是ok的,
最后一句有点不明白,为什么用BufferedInputStream?这个是读文件的,不知道你后面是如何写的,难道还要把文件读到内存?在向客户端发送出去??这样的话下载GB级文件内存溢出。
BufferedInputStream和BufferedOutputStream 用了之后,一定要flush(),这样也许会解决你的中文下载报错。
我直接用BufferedOutputStream 下载文件成功,前面是用你的,后面如下:
InputStream in = new FileInputStream(file);// 将文件装换成缓冲流
OutputStream out = response.getOutputStream(); // 获取response中得下载对象
BufferedOutputStream bufo = new BufferedOutputStream(out); // 对象转换成字符流
int length = 0; // 读取本地文时,记录本次文件读取内容大小
byte[] buffer = new byte[524288]; // 每次推送 512KB
while ((length = in.read(buffer)) != -1) // 读取本地文件,并在存放在buffer 数组
{
bufo.write(buffer, 0, length);// 预备向客户端推送
bufo.flush();// 清空缓存,并立即推送
}
in.close();
out.close();
bufo.close();
不建议写 response.setContentLength(int); 大并发时,这个容易出问题。
Java中文件下载该怎么写代码求高手指导
你的上传做了吗?
if (upfile.exists()) {
bytes = FileUtils.readFileToByteArray(upfile);
response.setContentType("application/x-download");
String agent = request.getHeader("USER-AGENT");//用户代理
// 防止中文文件名乱码
if (null != agent -1 != agent.indexOf("MSIE")) {
String codedfilename = StringUtils.replace(URLEncoder.encode(fileName, "UTF-8"), "+", "%20");
response.setHeader("Content-Disposition", "attachment;filename=" + codedfilename);
} else if (null != agent -1 != agent.indexOf("Mozilla")) {
String codedfilename = MimeUtility.encodeText(fileName, "UTF-8", "B");
response.setHeader("Content-Disposition", "attachment;filename=" + codedfilename);
} else {
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
}
response.setContentLength(bytes.length);
response.getOutputStream().write(bytes);
}
我有一段java http下载的代码,但是我很多地方读不懂,帮我谢谢注释
package API;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
import Get.Other_API.*;
public class DownFile implements Runnable
{
private String LOCAL_PATH="d:/";
private String Down_Path=null;
//下面两个是Down_Path的get和set的方法
public String getDown_Path() { return Down_Path;}
public void setDown_Path(String downPath) {Down_Path=downPath;}
public String getPath() { return LOCAL_PATH; }
public void setPath(String Path) {LOCAL_PATH=Path;}
public void DownNow()
{
//待下载文件地址
String fileUrl=getDown_Path();
InputStream in=null;
OutputStream out=null;
HttpURLConnection conn=null;
String fileName=null;
int count=0;
int finished=0;
int _temp=0;
try
{
//初始化连接
URL url=new URL(fileUrl);//将String类型的地址变为url对象
conn = (HttpURLConnection) url.openConnection();//开启连接
conn.setDoInput(true);//必要的,开启输入输出的设置
conn.setDoOutput(true);
//获取文件名
String disposition=conn.getHeaderField("Content-Disposition");
if(disposition!=null!"".equals(disposition))
{
//从头中获取文件名
fileName=disposition.split(";")[1].split("=")[1].replaceAll("\"","");
}
else
{
//从地址中获取文件名
fileName=fileUrl.substring(fileUrl.lastIndexOf("/")+1);
}
if(fileName!=null!"".equals(fileName))
{
//文件名解码
fileName=URLDecoder.decode(fileName, "utf-8");
}
else
{
System.out.println("Error");
//如果无法获取文件名,则随机生成一个
//fileName="file_"+(int)(Math.random()*10);
}
//读取数据
if(conn.getResponseCode()==HttpURLConnection.HTTP_OK)
{
//这种方法比较常用,得记住
byte[] buffer=new byte[2048];
in = conn.getInputStream();//获取文本的输入流
out=new FileOutputStream(new File(LOCAL_PATH,fileName));//确定输出的地方
int size=conn.getContentLength();
while((count=in.read(buffer))!=-1)//不断循环,每次读取2048比特的数据
{
if(count!=0)
{
out.write(buffer,0,count);//将count大小的数据写进去
finished+=count;//结尾的写入的位置改变,为下次写入做准备
if(_temp%500==0)
{
System.out.printf("下载已完成----%1$.2f%%\n",(double)finished/size*100);//动态输出下载的进度
_temp=0;
}
_temp++;
}
else
{
break;
}
}
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
out.close();//关闭输出流
in.close();//关闭输入流
conn.disconnect();//关闭连接,有打开就有关闭
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
//因为该类实现了Runnable接口,所以得实现这个run方法
@Override
public void run() {
// TODO Auto-generated method stub
DownNow();//调用上面的DownNow方法
}
}