java ftp读取文件内容_java读取ftp中TXT文件的案例

最近在开发关于java读取ftp中TXT文件,其中有些坑踩了一下,再次做个记录

1、读取文件时我会根据文件名称去生成数据库表,oracle数据库对于表名的长度是有限制的,最多30个字符

2、对于多个文件的ftp的读取,每次获取文件后再次回去文件的流会为空,即在循环中多次根据ftp获取文件的流

555ae42e7cacccf8ca672da684ebd2d8.png

当出现这种情况时,需要在循环时每次开启和关闭ftp的链接即可解决,否则在第二次获取的时候inputsteam为null

3、读取txt文件时,如果文件中包含中文,进行读取时可能会出现乱码,这是可设置读取的字符集为UTF-8,如果不行,再试试

GB2312

4、java读取TXT文件:

InputStreamReader reader = new InputStreamReader(is, "GB2312");

BufferedReader br = new BufferedReader(reader);

String lineTxt = null; //每行数据

int rowNum = 0;

while ((lineTxt = br.readLine()) != null) {}

补充知识:Java实现从FTP获取文件下载到本地,并读取文件中的内容的成功方法

我就废话不多说了,大家还是直接看代码吧~

package com.aof.web.servlet;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import javax.jws.WebService;

import org.apache.commons.net.ftp.FTPClient;

import org.apache.commons.net.ftp.FTPFile;

@WebService(endpointInterface="com.aof.web.servlet.QualityComplainServices")

public class QualityComplainServicesImpl implements QualityComplainServices {

//ftp对象

private FTPClient ftp;

//需要连接到的ftp端的ip

private String ip = "10.46.249.7";

//连接端口,默认21

private int port = 21;

//要连接到的ftp端的名字

private String name = "DKEDI";

//要连接到的ftp端的对应得密码

private String pwd = "P@ssw0rd";

//调用此方法,输入对应得ip,端口,要连接到的ftp端的名字,要连接到的ftp端的对应得密码。连接到ftp对象,并验证登录进入fto

public boolean ftp1() {

ftp = new FTPClient();

try {

// ftp.connect(ip, port);

if(!ftp.isConnected()){

ftp.connect(ip, port);

}

System.out.println(ftp.login(name, pwd));

// ftp.setCharset(Charset.forName("UTF-8"));

ftp.setControlEncoding("UTF-8");

return true;

} catch (IOException e) {

e.printStackTrace();

return true;

}

}

public void disconnect() throws Exception {

if (ftp.isConnected()) {

ftp.disconnect();

}

}

// 下载文件到本地

public boolean download(FTPFile file) throws Exception {

boolean result = true;

// 本地文件路径

File f = new File("E:\crmFiles\");

if (!f.exists()) {

f.getParentFile().mkdirs();

}

long lRemoteSize = file.getSize();

try {// 下载过的不在下载了

OutputStream out = new FileOutputStream(f);

if (f.length() >= lRemoteSize) {

System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~本地已经存在,下载中止");

out.flush();

out.close();

}

boolean iss = ftp.retrieveFile(file.getName(), out);

System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~下载成功

");

out.close();

} catch (Exception ex) {

ex.printStackTrace();

System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~下载失败

");

return false;

}

return result;

}

private InputStreamReader read;

private BufferedReader reader;

private String preRead(String filepath) throws Exception {

File file = new File(filepath);

String ordertype = null;

if (file.isFile() && file.exists()) {

try {

read = new InputStreamReader(new FileInputStream(file), "GBK");

reader = new BufferedReader(read);

StringBuffer FileContent = new StringBuffer();

String temp = null;

while ((temp = reader.readLine()) != null) {

FileContent.append(temp);

}

System.out.println("订单内容为------------------>>>>> "+FileContent+" <<<<

} catch (FileNotFoundException e) {

System.out.println("!!!!!!!!!!!!!!!!!没有找到合适的订单信息!!!!!!!!!!!!!!!");

e.printStackTrace();

} finally {

reader.close();

read.close();

// file.delete();

}

}

return ordertype;

}

public void gmRead(String remote) throws Exception {

boolean downloadResult = false;

try {

ftp.changeWorkingDirectory(remote);

System.out.println("远程路径为*************************"+remote);

FTPFile[] files = ftp.listFiles(remote); // 通过路径得到文件

System.out.println("文件数量为*************************"+files.length);

for (int i = 0; i < files.length; i++) {

FTPFile file = files[i];

if (file.isFile()) {

downloadResult = this.download(file);// 下载文件 到本地读取路径

if (downloadResult) {

String ordertype = this.preRead("E:\crmFiles\");

}

/*//读取文件内容,将内容存数据库

InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");

BufferedReader br = new BufferedReader(isr);

String lineTxt = null;

while ((lineTxt = br.readLine()) != null) {

lineTxt+=lineTxt;

}

System.out.println(lineTxt);

br.close();*/

}else{

System.out.println("************* 文件不存在 ************");

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

public String threeDAndEightDReports(String orderNum, String FTPUrl, String FileType) {

//抱怨单号、FTP地址、3D/8D文件类型

System.out.println("1-------------"+orderNum);

System.out.println("2-------------"+FTPUrl);

System.out.println("3-------------"+FileType);

if(null != orderNum && null != FTPUrl && null != FileType){

//连接FTP

boolean flag = this.ftp1();

if(flag){

try {

//获取文件、解析文件内容,进库操作

this.gmRead(FTPUrl);

// 关闭连接

this.disconnect();

} catch (Exception e) {

e.printStackTrace();

}

}else{

System.out.println("!!!!!!!!!!!!!!!!!FTP连接失败!!!!!!!!!!!!!!!!!");

}

return "success";

}else{

return "fail";

}

}

public static void main(String[] args) {

QualityComplainServicesImpl q = new QualityComplainServicesImpl();

q.threeDAndEightDReports("001","/CRMINTERFACE","3D");

}

}

以上这篇java读取ftp中TXT文件的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持云海天教程。

原文链接:https://blog.csdn.net/zhang06105586/article/details/105410803

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java sql server 2016_SQL server 2016 安装步骤

1.进入安装中心&#xff1a;可以参考硬件和软件要求、可以看到一些说明文档2.选择全新安装模式继续安装3.输入产品秘钥&#xff1a;这里使用演示秘钥进行4.在协议中&#xff0c;点击同意&#xff0c;并点击下一步按钮&#xff0c;继续安装5.进入全局规则检查项&#xff0c;这里…

java resource file_Java 获取Resource目录下的文件解决办法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Java 获取Resource目录下的 文件有两种方式&#xff1a;Java代码中的类&#xff0c;要获取Resource资源 文件目录 下文件绝对路径寻址注意这个 / 址的是根 目录 &#xff0c;用绝对路径&#xff0c;可能会出现的问题是&#xff0c;…

java中有哪些锁_Java中有哪些锁?

1.公平锁 / 非公平锁2.可重入锁 / 不可重入锁3.独享锁 / 共享锁4.互斥锁 / 读写锁5.乐观锁 / 悲观锁6.分段锁7.偏向锁 / 轻量级锁 / 重量级锁8.自旋锁一、公平锁 / 非公平锁公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁非公平锁是指多个线程获取锁的顺序并不是…

java中对象类型转换_Java中的对象的类型转换介绍(附代码)

本篇文章给大家带来的内容是关于Java中的对象的类型转换介绍(附代码)&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。向上转型&#xff1a;子类对象转为父类&#xff0c;父类可以是接口。公式&#xff1a;Father f new Son(…

java中的single_解析java泛型(一)

对于我们java中的泛型&#xff0c;可能很多人知道怎么使用并且使用的还不错&#xff0c;但是我认为想要恰到好处的使用泛型&#xff0c;还是需要深入的了解一下它的各种概念和内部原理。本文将尽可能的囊括java泛型中的重要的概念。主要内容如下&#xff1a;泛型的定义及为什么…

java面板中添加面板_如何把窗体加入面板中 java

展开全部一般来说,我们常把JPanel[面板]放到JFrame窗体中但是也有一种内部窗体JInternalFrame ,可以放到其他的容器JDesktopPane里,效果图e69da5e887aa62616964757a686964616f31333363373731如下代码如下import java.awt.*;import java.awt.event.*;import java.beans.Property…

mysql 如果存在修改_mysql如存在并发修改可能,一定要注意保证数据一致性

近日&#xff0c;因人员调整接手了一个其他部门负责的项目。随后发现其中的很多关键环节是没有考虑mysql并发操作的&#xff0c;现列出存在的一例问题 并分享如何解决的。问题描述&#xff1a;用户账户余额转移赠送 (用户A将自己的账户剩余金额赠送给用户B),同一时刻还可能存在…

python prt_Python中的self

self代表类的实例&#xff0c;而非类。实例来说明Python1234567classTest:defprt(self):print(self)print(self.__class__)tTest()t.prt()执行结果如下Python12从上面的例子中可以很明显的看出&#xff0c;self代表的是类的实例。而self.class则指向类。self不必非写成self有很…

微信对账单 java_微信支付对账,你是如何处理的?

支付对账&#xff0c;即检查第三方支付与数据库中账单是否一一对应&#xff0c;涉及到微信对账单的处理&#xff0c;成功时&#xff0c;微信账单接口返回数据以文本表格的方式返回&#xff0c;第一行为表头&#xff0c;后面各行为对应的字段内容&#xff0c;字段内容跟查询订单…

java技术文章在哪里看呢_谈论Java技术似乎无处不在,但究竟是什么呢?文章末尾有福利...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼谈论Java技术似乎无处不在&#xff0c;但究竟是什么呢&#xff1f;下面的部分将解释Java技术如何既是一种编程语言&#xff0c;又是一种平台&#xff0c;并概述这种技术可以为您做些什么。Java编程语言是一种高级语言&#xff0c;可…

java中常用的关键字_java中的常用的关键字

在java编程过程中&#xff0c;会经常写到一些关键字&#xff0c;但是对于他们应用的方式其实一直是模仿状态&#xff0c;并没有很实质的去了解&#xff0c;为什么要这么用&#xff0c;导致程序不能优化&#xff0c;或者出现了bug不明所以&#xff0c;因而再详细的去重温了一下各…

java如何处理灰度图片_Java图片的灰度处理方法

通过看网上各种大牛的总结&#xff0c;和自己亲身测试总结一下Java图片的灰度处理方法(1)我们熟知的图片中的像素点有RGB值。(2)图片灰度化的方式大概分为四种&#xff0c;第一种是最大值法(取颜色RGB中的最大值作为灰度值)&#xff1b;第二种是最小值法(取颜色RGB的最小值作为…

java多项式和_在Java中查找多项式的根

小编典典请找到以下相同的示例示例public class PolynomialRootFinder {/*** * Given a set of polynomial coefficients, compute the roots of the polynomial. Depending on* the polynomial being considered the roots may contain complex number. When complex numbers …

java7 nio2 新特性_JDK7新特性,你知道几个?

前言之前学习的过程中&#xff0c;每天都是老师说这个是JDK7以后可以使用&#xff0c;那个是JDK8以后可以使用&#xff0c;每天都记的很混乱&#xff0c;今天专门忙里偷闲&#xff0c;归拢整理下JDK7的新特性&#xff0c;对于JDK的新特性&#xff0c;后期会进行整理更新&#x…

java jsp校验提示信息_java Jquery表单校验代码jsp页面

jsp.file欢迎注册EasyMall/* 注册表单的js校验 */var formObj {/* 检查输入项是否为空 */"checkNull" : function(name, msg){var value $("input[name"name"]").val().trim();//清空之前的提示消息formObj.setMsg(name, "");if(val…

错误处理方法 java_JAVA常见错误处理方法 和 JVM内存结构

OutOfMemoryError在开发过程中是司空见惯的&#xff0c;遇到这个错误&#xff0c;新手程序员都知道从两个方面入手来解决&#xff1a;一是排查程序是否有BUG导致内存泄漏&#xff1b;二是调整JVM启动参数增大内存。OutOfMemoryError有好几种情况&#xff0c;每次遇到这个错误时…

java中如何分隔字符串_Java中分割字符串

java.lang.String的split()方法, JDK 1.4 or laterpublic String[] split(String regex,int limit)示例代码public classStringSplit {public static voidmain(String[] args) {String sourceStr "1,2,3,4,5";String[] sourceStrArray sourceStr.split(",&quo…

typescript 接口 java_Typescript基础(4)——接口

前言今天继续typescript的学习&#xff0c;开始ts接口部分的学习。接口接口的理解首先&#xff0c;我们谈论一下现实生活中的接口。比如生活中常用的插座接口&#xff0c;有些插头是三孔插座的&#xff0c;有些是两孔插座的。插座接口规定了插头的数目&#xff0c;那么我们的电…

php测试号推送消息失败,信息发送失败是什么原因

手机突然信息发送失败可能是以下原因&#xff1a;1.是因为我们的手机出现了欠费的情况,所以发不出短信,这种情况是最为普遍的,需要我们及时的进行缴费。2.手机的信息中心的号码设置有误,应该根据你所在省份的实际信息中心号码进行设置,这样一般就能解决这方面的问题。可能是你的…

php ajax 概率 转盘,php+jquery实现转盘抽奖 概率可任意调

phpjquery实现转盘抽奖 概率可任意调phpjquery实现转盘抽奖 概率可任意调Posted by: xiaomiao 2014/05/13in Code, PHP 3 Commentsphpjquery实现转盘抽奖查看DEMO演示转盘抽奖&#xff0c;炫丽的一般是flash做的。不懂flash而又不需要那么炫丽&#xff0c;可以简单的通过jquer…