java编写Http服务器下载工具
作者:hebedich 发布时间:2021-11-08 08:07:38
标签:java,Http,下载
这个工具比较简单,用于配合另外一个工具进行文件传送,废话少说,上代码
import java.net.URL;
import java.net.URLConnection;
import java.io.File;
import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class HttpUtil{
private String httppath = "";
public void setHttpPath(String httppath){
this.httppath = httppath;
}
public String getHttpPath(){
return this.httppath;
}
public HttpUtil(String httppath){
this.httppath = httppath;
}
public InputStream getStream(String url){
InputStream inStream = null;
try{
URL httpurl = new URL(url);
URLConnection conn = httpurl.openConnection();
inStream = conn.getInputStream();
}catch (Exception e){
e.printStackTrace();
return null;
}
return inStream;
}
public int downLoad(String url,String localName ,int lines) throws FileNotFoundException, IOException{
FileOutputStream fos = null;
InputStream inStream = null;
int ret = 0;
try{
URL httpurl = new URL(url);
URLConnection conn = httpurl.openConnection();
inStream = conn.getInputStream();
fos = new FileOutputStream(localName);
byte[] b = new byte[102400];
int j = 0;
while(inStream.read(b) != -1 && lines > 0){
for(int i = j; i < b.length; i++){
if(b[i] == '\n'){
fos.write(b, j, i - j + 1);
lines--;
if(lines <= 0){
break;
}
j = i + 1;
continue;
}
}
}
}catch (Exception e){
e.printStackTrace();
ret = -1;
}finally {
fos.close();
inStream.close();
return ret;
}
}
public static void main(String[] args){
String httppath = "";
int lines = 0;
String localName = "";
try{
httppath = args[0];
localName = args[1];
lines = Integer.parseInt(args[2]);
}catch (Exception e){
e.printStackTrace();
return;
}
try{
HttpUtil hu = new HttpUtil(httppath);
hu.downLoad(hu.getHttpPath(),localName ,lines);
}catch (Exception e){
e.printStackTrace();
}
}
}
这个工具实现了从HTTP服务器上下载指定行数的文件,并且不会因为编码的问题引起下载的文件内容乱码
三个工具已经搞定,下一次就是把这三个工具结合起来将HTTP、FTP的文件转移到HDFS上
hadoop工具
ftp工具
请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!


猜你喜欢
- 目录1、在java中,无论在何处调用,使用静态属性必须以类名做前缀。2、若有定义语句: int a=10 ; double b=3.14 ;
- 实现的功能:默认情况下将扫描整个项目的文件可以使用@ComponentScan注解配置扫描路径只将被@Component注解修饰的类装载到容
- PPT中的动画效果可分为已有内置动画以及自定义动画。设置内置动画,只需直接指定动画效果类型即可。本文主要介绍如何实现自定义动画,即自定义形状
- 位操作符是对数据按二进制位进行运算的操作符。位操作是其他很多语言都支持的操作,如C、C++和Java等,C#也不例外支持位操作。注意位操作支
- 前言好几天没写了,工作有点忙,最近工作刚好做一个定时任务统计的,所以就将springboot 如何创建定时任务整理了一下。总的来说,spri
- 1. Stack1.1 介绍Stack 栈是 Vector 的一个子类,它实现了一个标准的后进先出的栈。它的底层是一个数组。堆栈只定义了默认
- DES一共就有4个参数参与运作:明文、密文、密钥、向量。为了初学者容易理解,可以把4个参数的关系写成:密文=明文+密钥+向量;明文=密文-密
- Mybatis无法获取带有下划线前缀的字段的值今天下面,把几张表里的字段都加了前缀,如 article_id,article_title,a
- 随着kotlin在Android开发领域越来越火,协程在各个项目中的应用也逐渐变得广泛但是协程到底是什么呢?协程其实是个古老的概念,已经非常
- 本文实例分析了C#中登录窗体和欢迎窗体关闭方法。分享给大家供大家参考。具体分析如下:在c#的winform编程中,我们经常会做登录窗体或欢迎
- 前言今天起床,拿起手机开机第一时间当然是打开微信了,左右滑动Viewpager,发现它使用了一种叫惰性加载,或者说懒加载(lazy-load
- 简介:gateway主要是做路由 负载,过滤 主要是替代zuul 1.x 性能比zuul好 zuul是基于Servlet ,gateway是
- java匿名内部类:1:匿名内部类,匿名内部类也就是没有名字的内部类。2:匿名内部类的作用正因为没有名字,所以匿名内部类只能使用一次,它通常
- 本文实例为大家分享了Android仿大众点评星星评分控件的具体代码,供大家参考,具体内容如下话不多说,直接上代码,这里采用的是自定Viewp
- java 事务详解一、什么是事务事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种
- jpa配置多数据源教程很多,在Springboot2之后有一些变化,来看一下。application.yml如下spring:
- 一、dfs(深度优先搜索)1.图的dfs/** * 深度优先搜索 * * @param node * @param set */publi
- 这个问题来来回回困扰了我很久,一直没能妥善解决。场景1:华为手机遮挡了屏幕底部。场景2:进入应用时,虚拟键自动缩回,留下空白区域。需求:需要
- 前言为什么用动静态库我们在实际开发中,经常要使用别人已经实现好的功能,这是为了开发效率和鲁棒性(健壮性);因为那些功能都是顶尖的工程师已经写
- 发布:一个对象是使它能够被当前范围之外的代码所引用:常见形式:将对象的的引用存储到公共静态域;非私有方法中返回引用;发布内部类实例,包含引用