jdk1 6(就职的公司居然还在用Java 1.6,该不该换公司)
本文目录
- 就职的公司居然还在用Java 1.6,该不该换公司
- java jdk1.6平台的安装及应用
- jdk1.6新特性
- Java编程之jdk1.4,jdk1.5和jdk1.6的区别分析
- “java jdk 1.6“这软件怎么用
- java jdk1.6环境下实现 ftp文件上传
就职的公司居然还在用Java 1.6,该不该换公司
谢邀~
公司还在使用JDK6,不应该是你跳槽的直接原因。
为什么有些公司还在使用JDK6
别说1.6了,还在用1.5的我都见过。
很多企业级的应用,都会运行个三五年,甚至更长的时间,才会有新的系统替代他。如果题主公司的项目都是运行五年以上的话,现在还使用JDK6是有情可原的。(JDK7好像是11年发布的)。
对于大多数企业级应用来说,当系统上线后,“稳定”是最重要的,所以当业务需求可以满足、系统效率也能跟得上的时候,企业是不会轻易升级JDK版本的。
版本高,不一定使用到新特性
首先,Java常用的内容,比如集合、IO、多线程(并发框架)、JVM的内部原理,这些基础的东西是一直都有的,你依然可以从JDK6中学到很多知识;
另外一方面,例如我们单位使用的是JDK8,但是据我观察,大部分程序员都没有用到高版本的新特性,比如很多程序员是不会写lambda表达式的;
我估计我们单位在几年内,也不会升级JDK版本的;若干年后,可能也会被问到“公司还在使用JDK8,要不要跳槽”。
顺着JDK,看看公司的技术栈
这里的技术栈是指:公司项目用到的框架、软件、架构等。(业务经验的积累,在这里不讨论,只谈技术)
有些公司使用SSH框架,单台关系型数据库;
有些公司除了常规的框架,开始使用Spring Boot;系统和系统之间除了接口调用之外,也用到消息队列进行解耦;除了关系型数据库,也引入了非关系型数据库;
有些公司用到了Dubbo、Spring Cloud,开始使用Docker,引入Devops,分库分表...
这时,公司之间技术的差距就显现出来了;同时也会影响到程序员的技术发展;这才是你考虑是否需要跳槽的因素之一。
总之,平台和个人的努力,都很重要。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
java jdk1.6平台的安装及应用
呵呵,楼上说的够详细的啦,不过我补充一句:环境变量的设置(教人要教最关键的)。 jdk的东西,初学不需要精通,知道它是用来做java开发的就可以了。 设置环境变量: 1.首先,我们要安装jdk,呵呵,注意你的安装目录,最好自定义一下,以后好找,别到最后了,连安装到哪里都不知道。好像它会自动先安装jdk,安装好后,提示你安装jre。都安装上,同一个目录下就可以。如:我的安装目录是:D:\programer\Java。在这个目录下会有你刚才安装的jdk和jre,并且都标示有版本号,我的是:1.5的。不过,道理一样。 2.配置你的环境变量:有3个值需要配置。右键点击“我的电脑”—》“属性”—》“高级”—》“环境变量”—》单击“系统变量”下的“新建”按钮,依次新建“classpath”“java_home”“path”环境变量,他们的值分别为: java_home=D:\programer\Java\jdk1.5.0_06 classpath=.\;D:\programer\Java\jdk1.5.0_06lib\tools.jar;D:\programer\Java\jdk1.5.0_06\lib\dt.jar;D:\programer\Java\jdk1.5.0_06\jre\lib path=D:\programer\Java\jdk1.5.0_06\bin (如果你的电脑已经有了path系统变量,则直接在后面加上这个值即可) 以上3值的设定,请注意比较我的安装路径。千万不要直接照抄! 3、测试jdk的安装: “开始”—》“运行”—》输入“cmd”进入DOS—》分别输入“java”和“javac” 如出现一系列参数,则,安装正常…… 4.其实,你要进行java的开发,仅有jdk,虽然可以,但不方便,建议安装eclipse,并且使用myeclipse,我的理解是myeclipse是eclipse的一个插件,如果有问题,问我。安装myeclipse时,如果你的电脑主题使用了别的,或是使用了美化包,建议全部关闭,使之成为最原始的windows经典主题。否则,会死翘翘滴。。。。。安装完后,主题可以再变回来,如果你要进行桌面程序的开发如:使用SWT+JFACE,建议还是使用默认的windows经典主题,否则,设计界面会有问题。 呵呵,干脆,我把关于java所需要的一些列软件的安装,都告诉你吧,看样你是初学java。这样会使你的学习过程比较有乐趣,想当年,我一个人研究的myeclipse的平台,连个帮我的人都没有,那个迷茫,那个郁闷,我都想放弃了。这可是当年搞定myeclipse时保存下来的心得,全部给你把。有问题找我。具体软件的下载,你先自己找找看吧,对了,你的E文好吗? 要去官方网站上下,或是使用myecli自带的help_》help contents里面自己找。建议先使用我推荐的版本,然后自己熟了,在逐渐摸索。 一、tomcat的安装和配置 1、安装版本:jakarta-tomcat-5.0.28.exe (core版) 2、配置系统环境变量: 设:我的安装路径为:D:\programer\Tomcat 5.0 则:右键点击“我的电脑”—》“属性”—》“高级”—》“环境变量”—》单击“系统变量”下的“新建”按钮,新建“tomcat_home”环境变量,它的值为: tomcat_home=D:\programer\Tomcat 5.0 以上值的设定,请注意比较我的安装路径。 3、测试运行tomcat的安装: 可直接双击托盘内tomcat的小图标,或到安装目录下找到“tomcat5w.exe”,双击,即可弹出tomcat的运行界面。他的路径为D:\programer\Tomcat 5.0 \bin\tomcat5w.exe 测试:打开ie,输入“”,其中,8080是默认的端口号。会看到tomcat的主界面,也就是控制面板,搞定它是门大学问。暂时不在此讲解 三、eclipse的安装和配置 1、安装版本:eclipse-SDK-3.1.2-win32.zip 这里说安装不准确,应该说是解压。解压到你的指定目录。 2、link安装方法: 建议在安装eclipse插件时,使用此方法。 使用link安装方法的先决条件: (1)、 插件的解压缩文件的根目录必须为:*:\eclipse\…… (2)、在解压好的eclipse目录中建立一个文件包,包名随意。设我的eclipse安装目录为:D:\programer\eclipse则我新建的包的目录为: D:\programer\eclipse\links,其中links就是我新建的包。 (3)、为安装的各种eclipse插件,新建link文件,这种文件的后缀名可随意,但我建议使用link做后缀。用记事本打开,并写入: path=……,具体值在下面介绍。注意自己总结规律。 3、语言包的安装:建议在刚接触时使用,熟悉eclipse的开发环境后,立即删除,因为,如果你不懂e文,就别想在软件这一行混了……安装时要注意版本,我的版本是:NLpack-eclipse-SDK-3.1.x-win32.zip。所有eclipse的插件安装,都必须注意版本号! 我们使用link安装方法,安装我们的语言包,同样是解压,建议你新建一个专门用于存放各类插件解压文件的文件包,我的为:D:\links。 在D:\links下,新建language文件包,将NLpack-eclipse-SDK-3.1.x-win32.zip解压到此文件包内,注意,这时的language文件包的根目录就是:eclipse。(这样表述 可能不正确……o(∩_∩)o),然后在D:\programer\eclipse\links中建立语言包的link文件,我的为:language.link。用记事本打开,并写入: path=D:\\links\\language至于为什么这样写,大家都是聪明的孩子,不用我多说了吧! 4、测试eclipse及语言包的安装: 打开eclipse,会发现你的已是中文。ok! 5、如果不行,到Eclipse安装目录Configuration子目录下,找到org.eclipse.update文件包,靠!就是它搞得鬼,很简单,删掉,然后重新启动。 6、说明: (1). 插件可以分别安装在多个自定义的目录中。 (2). 一个自定义目录可以安装多个插件。 (3). link文件的文件名及扩展名可以取任意名称,比如ddd.txt,myplugin都可以。 (4). link文件中path=插件目录的path路径分隔要用\\或是/ (5). 在links目录也可以有多个link文件,每个link文件中的path参数都将生效。 (6). 插件目录可以使用相对路径。 (7). 可以在links目录中建立一个子目录,转移暂时不用的插件到此子目录中,加快eclipse启动。 (8). 如果安装后看不到插件,把eclipse 目录下的configuration目录删除,重启即可。 四、tomcat插件的安装和配置: 1、安装版本:tomcatPluginV3.zip,同样是解压,直接解压到eclipse安装目录下的/plugins子目录下即可。 2、tomcat的配置: 启动eclipse,选择“窗口”—》“首选项”,你会左面发现多了个“tomcat”,点它,在右面设置tomcat和tomcat_home,我就分别为你的安装版本和安装路径。我的为“version 5.x”和“D:\programer\Tomcat 5.0”,点“应用”。 然后,点开左面的tomcat,找到“advanced”,设置“tomcat base”,也是你的tomcat的安装路径。点“应用” 点“确定”,关闭。 五、Myeclipse的安装和配置 1、安装版本:MyEclipse4.1.1 for Eclipse3.1.X,在安装过程中,自动提示“please choose existing eclipse installation folder”也就是你的eclipse的安装目录。 2、进入你的eclipse安装目录,会发现多了一个ico的logo,就是它,其实myeclipse只是eclipse的一个插件…… 3、启动eclipse,在“首选项”中有多了一个“myeclipse”,恭喜你,安装成功了 4、配置: 添加tomcat到myeclipse,天啊,弹出窗口要我输入注册码,大家都是穷程序员,给大家个注册码: MyEclipse 5.0 M2 for Eclipse 3.2 Subscriber: Subscriber Code: jLR8ZC-444-55-4467865481680090 MyEclipse4.1.1GA for Eclipse3.1.X License name: hehe License Key: uLR8ZC-956-55-5467865991428004 MyEclipse3.8.4 for Eclipse3.0.X iwdc vAR7ZL-819-56-5467865451894096 hello uAR7ZL-819-56-54678656892787632 csdn pAR7ZL-819-56-5467865261354715 还是进入“首选项”,左边找到“myeclipse”—》“application servers”—》“tomcat5”,下面就是输入你的安装路径,点“应用”、“确定”。 六、搞定!兄弟,还有,你给的分是不是有点。。。。呵呵!
jdk1.6新特性
一:Desktop类和SystemTray类在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray。前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序.二:使用JAXB2来实现对象与XML之间的映射JAXB是Java Architecture for XML Binding的缩写,可以将一个Java对象转变成为XML格式,反之亦然。我们把对象与关系数据库之间的映射称为ORM, 其实也可以把对象与XML之间的映射称为OXM(Object XML Mapping). 原来JAXB是Java EE的一部分,在JDK6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK6中自带的这个JAXB版本是2.0, 比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。实际上,在Java EE 5.0中,EJB和Web Services也通过Annotation来简化开发工作。另外,JAXB2在底层是用StAX(JSR 173)来处理XML文档。除了JAXB之外,我们还可以通过XMLBeans和Castor等来实现同样的功能。三:理解StAXStAX(JSR 173)是JDK6.0中除了DOM和SAX之外的又一种处理XML文档的API。StAX 的来历 :在JAXP1.3(JSR 206)有两种处理XML文档的方法:DOM(Document Object Model)和SAX(Simple API for XML).由于JDK6.0中的JAXB2(JSR 222)和JAX-WS 2.0(JSR 224)都会用到StAX所以Sun决定把StAX加入到JAXP家族当中来,并将JAXP的版本升级到1.4(JAXP1.4是JAXP1.3的维护版本). JDK6里面JAXP的版本就是1.4. 。StAX是The Streaming API for XML的缩写,一种利用拉模式解析(pull-parsing)XML文档的API.StAX通过提供一种基于事件迭代器(Iterator)的API让程序员去控制xml文档解析过程,程序遍历这个事件迭代器去处理每一个解析事件,解析事件可以看做是程序拉出来的,也就是程序促使解析器产生一个解析事件然后处理该事件,之后又促使解析器产生下一个解析事件,如此循环直到碰到文档结束符;SAX也是基于事件处理xml文档,但却是用推模式解析,解析器解析完整个xml文档后,才产生解析事件,然后推给程序去处理这些事件;DOM采用的方式是将整个xml文档映射到一颗内存树,这样就可以很容易地得到父节点和子结点以及兄弟节点的数据,但如果文档很大,将会严重影响性能。四:使用Compiler API现在我 们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。这个特性对于某些需要用到动态编译的应用程序相当有用, 比如JSP Web Server,当我们手动修改JSP后,是不希望需要重启Web Server才可以看到效果的,这时候我们就可以用Compiler API来实现动态编译JSP文件,当然,现在的JSP Web Server也是支持JSP热部署的,现在的JSP Web Server通过在运行期间通过Runtime.exec或ProcessBuilder来调用javac来编译代码,这种方式需要我们产生另一个进程去做编译工作,不够优雅而且容易使代码依赖与特定的操作系统;Compiler API通过一套易用的标准的API提供了更加丰富的方式去做动态编译,而且是跨平台的。五:轻量级Http Server API JDK6 提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现HttpHandler接口,HttpServer会调用HttpHandler实现类的回调方法来处理客户端请求,在这里,我们把一个Http请求和它的响应称为一个交换,包装成HttpExchange类,HttpServer负责将HttpExchange传给 HttpHandler实现类的回调方法.六:插入式注解处理API(Pluggable Annotation Processing API)插入式注解处理API(JSR 269)提供一套标准API来处理Annotations(JSR 175)实际上JSR 269不仅仅用来处理Annotation,我觉得更强大的功能是它建立了Java 语言本身的一个模型,它把method, package, constructor, type, variable, enum, annotation等Java语言元素映射为Types和Elements(两者有什么区别?), 从而将Java语言的语义映射成为对象, 我们可以在javax.lang.model包下面可以看到这些类. 所以我们可以利用JSR 269提供的API来构建一个功能丰富的元编程(metaprogramming)环境.JSR 269用Annotation Processor在编译期间而不是运行期间处理Annotation, Annotation Processor相当于编译器的一个插件,所以称为插入式注解处理.如果Annotation Processor处理Annotation时(执行process方法)产生了新的Java代码,编译器会再调用一次Annotation Processor,如果第二次处理还有新代码产生,就会接着调用Annotation Processor,直到没有新代码产生为止.每执行一次process()方法被称为一个"round",这样整个Annotation processing过程可以看作是一个round的序列.JSR 269主要被设计成为针对Tools或者容器的API. 举个例子,我们想建立一套基于Annotation的单元测试框架(如TestNG),在测试类里面用Annotation来标识测试期间需要执行的测试方法。七:用Console开发控制台程序JDK6中提供了java.io.Console 类专用来访问基于字符的控制台设备. 你的程序如果要与Windows下的cmd或者Linux下的Terminal交互,就可以用Console类代劳. 但我们不总是能得到可用的Console, 一个JVM是否有可用的Console依赖于底层平台和JVM如何被调用. 如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地方,那么就可以得到一个可用的Console实例.八:对脚本语言的支持如: ruby, groovy, javascript.九:Common AnnotationsCommon annotations原本是Java EE 5.0(JSR 244)规范的一部分,现在SUN把它的一部分放到了Java SE 6.0中.随着Annotation元数据功能(JSR 175)加入到Java SE 5.0里面,很多Java 技术(比如EJB,Web Services)都会用Annotation部分代替XML文件来配置运行参数(或者说是支持声明式编程,如EJB的声明式事务), 如果这些技术为通用目的都单独定义了自己的Annotations,显然有点重复建设, 所以,为其他相关的Java技术定义一套公共的Annotation是有价值的,可以避免重复建设的同时,也保证Java SE和Java EE 各种技术的一致性.下面列举出Common Annotations 1.0里面的10个Annotations Common Annotations Annotation Retention Target DescriptionGenerated Source ANNOTATION_TYPE, CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE 用于标注生成的源代码 Resource Runtime TYPE, METHOD, FIELD 用于标注所依赖的资源,容器据此注入外部资源依赖,有基于字段的注入和基于setter方法的注入两种方式 Resources Runtime TYPE 同时标注多个外部依赖,容器会把所有这些外部依赖注入PostConstruct Runtime METHOD 标注当容器注入所有依赖之后运行的方法,用来进行依赖注入后的初始化工作,只有一个方法可以标注为PostConstructPreDestroy Runtime METHOD 当对象实例将要被从容器当中删掉之前,要执行的回调方法要标注为PreDestroy RunAs Runtime TYPE 用于标注用什么安全角色来执行被标注类的方法,这个安全角色必须和Container 的Security角色一致的。RolesAllowed Runtime TYPE, METHOD 用于标注允许执行被标注类或方法的安全角色,这个安全角色必须和Container 的Security角色一致的PermitAll Runtime TYPE, METHOD 允许所有角色执行被标注的类或方法DenyAll Runtime TYPE, METHOD 不允许任何角色执行被标注的类或方法,表明该类或方法不能在Java EE容器里面运行 DeclareRoles Runtime TYPE 用来定义可以被应用程序检验的安全角色,通常用isUserInRole来检验安全角色注意: 1.RolesAllowed,PermitAll,DenyAll不能同时应用到一个类或方法上2.标注在方法上的RolesAllowed,PermitAll,DenyAll会覆盖标注在类上的RolesAllowed,PermitAll,DenyAll3.RunAs,RolesAllowed,PermitAll,DenyAll和DeclareRoles还没有加到Java SE 6.0上来 4. 处理以上Annotations的工作是由Java EE容器来做, Java SE 6.0只是包含了上面表格的前五种Annotations的定义类,并没有包含处理这些Annotations的引擎,这个工作可以由Pluggable Annotation Processing API(JSR 269)来做
Java编程之jdk1.4,jdk1.5和jdk1.6的区别分析
jdk6和jdk5相比的新特性有:1、instrumentation在JavaSE6里面,instrumentation包被赋予了更强大的功能:启动后的instrument、本地代码instrument,以及动态改变classpath等等。2、Http有所增强3、Java管理扩展(JMX)架构及其框架,以及在JavaSE5中新引入的JMXAPI--java.lang.management包4、JDK6中新增加编译器API(JSR199)。利用此API,您可以在运行时调用Java编译器,可以编译不同形式的源代码文件,还可以采集编译器的诊断信息。5、JavaDB和JDBC4.06、对脚本语言的支持JavaSE6新引入的对JSR223的支持,它旨在定义一个统一的规范,使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的。7、XMLAPI与Web服务JavaSE6中提供的XML处理框架,以及在此框架之上结合注释(Annotation)技术,所提供的强大的针对Web服务的支持要详细的可以参看:七、XMLAPI与Web服务
“java jdk 1.6“这软件怎么用
呵呵,楼上说的够详细的啦,不过我补充一句:环境变量的设置(教人要教最关键的)。 jdk的东西,初学不需要精通,知道它是用来做java开发的就可以了。 设置环境变量: 1.首先,我们要安装jdk,呵呵,注意你的安装目录,最好自定义一下,以后好找,别到最后了,连安装到哪里都不知道。好像它会自动先安装jdk,安装好后,提示你安装jre。都安装上,同一个目录下就可以。如:我的安装目录是:D:\programer\Java。在这个目录下会有你刚才安装的jdk和jre,并且都标示有版本号,我的是:1.5的。不过,道理一样。 2.配置你的环境变量:有3个值需要配置。右键点击“我的电脑”—》“属性”—》“高级”—》“环境变量”—》单击“系统变量”下的“新建”按钮,依次新建“classpath”“java_home”“path”环境变量,他们的值分别为: java_home=D:\programer\Java\jdk1.5.0_06 classpath=.\;D:\programer\Java\jdk1.5.0_06lib\tools.jar;D:\programer\Java\jdk1.5.0_06\lib\dt.jar;D:\programer\Java\jdk1.5.0_06\jre\lib path=D:\programer\Java\jdk1.5.0_06\bin (如果你的电脑已经有了path系统变量,则直接在后面加上这个值即可) 以上3值的设定,请注意比较我的安装路径。千万不要直接照抄! 3、测试jdk的安装: “开始”—》“运行”—》输入“cmd”进入DOS—》分别输入“java”和“javac” 如出现一系列参数,则,安装正常…… 4.其实,你要进行java的开发,仅有jdk,虽然可以,但不方便,建议安装eclipse,并且使用myeclipse,我的理解是myeclipse是eclipse的一个插件,如果有问题,问我。安装myeclipse时,如果你的电脑主题使用了别的,或是使用了美化包,建议全部关闭,使之成为最原始的windows经典主题。否则,会死翘翘滴。。。。。安装完后,主题可以再变回来,如果你要进行桌面程序的开发如:使用SWT+JFACE,建议还是使用默认的windows经典主题,否则,设计界面会有问题。 呵呵,干脆,我把关于java所需要的一些列软件的安装,都告诉你吧,看样你是初学java。这样会使你的学习过程比较有乐趣,想当年,我一个人研究的myeclipse的平台,连个帮我的人都没有,那个迷茫,那个郁闷,我都想放弃了。这可是当年搞定myeclipse时保存下来的心得,全部给你把。有问题找我。具体软件的下载,你先自己找找看吧,对了,你的E文好吗? 要去官方网站上下,或是使用myecli自带的help_》help contents里面自己找。建议先使用我推荐的版本,然后自己熟了,在逐渐摸索。 一、tomcat的安装和配置 1、安装版本:jakarta-tomcat-5.0.28.exe (core版) 2、配置系统环境变量: 设:我的安装路径为:D:\programer\Tomcat 5.0 则:右键点击“我的电脑”—》“属性”—》“高级”—》“环境变量”—》单击“系统变量”下的“新建”按钮,新建“tomcat_home”环境变量,它的值为: tomcat_home=D:\programer\Tomcat 5.0 以上值的设定,请注意比较我的安装路径。 3、测试运行tomcat的安装: 可直接双击托盘内tomcat的小图标,或到安装目录下找到“tomcat5w.exe”,双击,即可弹出tomcat的运行界面。他的路径为D:\programer\Tomcat 5.0 \bin\tomcat5w.exe 测试:打开ie,输入“呵呵!
java jdk1.6环境下实现 ftp文件上传
通过JDK自带的API实现 package com.cloudpower.util; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException; import sun.net.TelnetInputStream;import sun.net.TelnetOutputStream;import sun.net.ftp.FtpClient; /** * Java自带的API对FTP的操作 * @Title:Ftp.java * @author: 周玲斌 */public class Ftp { /** * 本地文件名 */ private String localfilename; /** * 远程文件名 */ private String remotefilename; /** * FTP客户端 */ private FtpClient ftpClient; /** * 服务器连接 * @param ip 服务器IP * @param port 服务器端口 * @param user 用户名 * @param password 密码 * @param path 服务器路径 * @author 周玲斌 * @date 2012-7-11 */ public void connectServer(String ip, int port, String user, String password, String path) { try { /* ******连接服务器的两种方法*******/ //第一种方法// ftpClient = new FtpClient();// ftpClient.openServer(ip, port); //第二种方法 ftpClient = new FtpClient(ip); ftpClient.login(user, password); // 设置成2进制传输 ftpClient.binary(); System.out.println("login success!"); if (path.length() != 0){ //把远程系统上的目录切换到参数path所指定的目录 ftpClient.cd(path); } ftpClient.binary(); } catch (IOException ex) { ex.printStackTrace(); throw new RuntimeException(ex); } } /** * 关闭连接 * @author 周玲斌 * @date 2012-7-11 */ public void closeConnect() { try { ftpClient.closeServer(); System.out.println("disconnect success"); } catch (IOException ex) { System.out.println("not disconnect"); ex.printStackTrace(); throw new RuntimeException(ex); } } /** * 上传文件 * @param localFile 本地文件 * @param remoteFile 远程文件 * @author 周玲斌 * @date 2012-7-11 */ public void upload(String localFile, String remoteFile) { this.localfilename = localFile; this.remotefilename = remoteFile; TelnetOutputStream os = null; FileInputStream is = null; try { //将远程文件加入输出流中 os = ftpClient.put(this.remotefilename); //获取本地文件的输入流 File file_in = new File(this.localfilename); is = new FileInputStream(file_in); //创建一个缓冲区 byte; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); } System.out.println("upload success"); } catch (IOException ex) { System.out.println("not upload"); ex.printStackTrace(); throw new RuntimeException(ex); } finally{ try { if(is != null){ is.close(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if(os != null){ os.close(); } } catch (IOException e) { e.printStackTrace(); } } } } /** * 下载文件 * @param remoteFile 远程文件路径(服务器端) * @param localFile 本地文件路径(客户端) * @author 周玲斌 * @date 2012-7-11 */ public void download(String remoteFile, String localFile) { TelnetInputStream is = null; FileOutputStream os = null; try { //获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。 is = ftpClient.get(remoteFile); File file_in = new File(localFile); os = new FileOutputStream(file_in); byte; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); } System.out.println("download success"); } catch (IOException ex) { System.out.println("not download"); ex.printStackTrace(); throw new RuntimeException(ex); } finally{ try { if(is != null){ is.close(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if(os != null){ os.close(); } } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String agrs) { String filepath = { "/temp/aa.txt", "/temp/regist.log"}; String localfilepath = { "C:\\tmp\\1.txt","C:\\tmp\\2.log"}; Ftp fu = new Ftp(); /* * 使用默认的端口号、用户名、密码以及根目录连接FTP服务器 */ fu.connectServer("127.0.0.1", 22, "anonymous", "IEUser@", "/temp"); //下载 for (int i = 0; i 《 filepath.length; i++) { fu.download(filepath); } String localfile = "E:\\号码.txt"; String remotefile = "/temp/哈哈.txt"; //上传 fu.upload(localfile, remotefile); fu.closeConnect(); }}
更多文章:
奇迹mu永恒之巅精灵游侠和神射手区别?奇迹 永恒之巅黑暗深渊地图是干嘛的
2023年10月21日 17:41
《原神》蓝绿修改器会封号吗?原神蓝绿修改器会用到微信的钱嘛,
2024年3月20日 12:45
microsoft net framework(Microsoft .NET Framework是什么,重要吗)
2024年7月11日 11:30
天涯明月刀大轻功(天涯明月刀大轻功怎么学 天刀大轻功获取流程详解)
2024年6月5日 08:33
闪耀暖暖入夜派对答案(《闪耀暖暖》墨丘利在此刻的vip级别是多少)
2024年1月3日 23:40
dnf为什么安装不了(DNF在官方下载下来为什么安装不了,也重新下载了好几次都是一样)
2024年7月11日 17:51
win10 开始菜单打不开(win10点击开始菜单没有反应)
2024年6月26日 09:40
友缘燃油怎么用?友缘在线,跟别人聊天没有话题,气氛很尴尬,怎么办
2024年6月8日 22:25
植物大战僵尸2游戏下载安装(电脑上怎么下载安装植物大战僵尸2)
2024年9月1日 18:50
微信ipad mini版下载(微信在 iPad mini 上能下载安装么具体如何下载呢)
2024年5月23日 01:47