Java生成txt文件并使用FTP上传服务器

controller层代码,文件FTP上传


private Service thisService = new Service();

//生成文件
File fansDataText = thisService.createTextForWxUser();
        //记录日志信息
DBCollection dbLog = MogoDBUtil.getDBCollection("OperationLog", "ocm_log");
String hn = params.get("hn"); //ip
Integer pt = Integer.parseInt(params.get("pt"));//端口
String un = params.get("un");//FTP登陆账号
String pd = params.get("pd");//FTP登陆密码
//创建客户端对象
FTPClient ftp = new FTPClient();
InputStream local = null;
try {
//连接ftp服务器
ftp.connect(hn, pt);
//登录
ftp.login(un, pd);
//设置上传路径
String path="/";
//检查上传路径是否存在 如果不存在返回false
boolean flag = ftp.changeWorkingDirectory(path);
if(!flag){
    //创建上传的路径  该方法只能创建一级目录,在这里如果/home/ftpuser存在则可创建image
    ftp.makeDirectory(path);
}
//设置字符集
ftp.setControlEncoding("UTF-8");
//启动被动模式  如果不设置被动模式,需要对方应答,容易上传失败
ftp.enterLocalPassiveMode();
//指定上传路径
ftp.changeWorkingDirectory(path);
//指定上传文件的类型  二进制文件
ftp.setFileType(FTP.BINARY_FILE_TYPE);
// 获取ftp登录应答代码
Integer reply = ftp.getReplyCode();
// 验证是否登陆成功
if (!FTPReply.isPositiveCompletion(reply)) {
    dbLog.save(dbObject);
    ftp.disconnect();
}
//读取本地文件
local = new FileInputStream(fansDataText);
//第一个参数是文件名 开始上传
boolean resuBool = ftp.storeFile(fansDataText.getName(), local);
//上传完毕,删除文件夹下所有文件,防止内存占用
thisService.delFile(fansDataText.getParent());

service层代码,包含txt文件写入生成,删除文件夹下所有内容

public File createTextForWxUser(){
    //创建文件
    final String filePath = this.getClass().getResource("/").getPath()+"file/sendDataToGuangDong";
    String fileName = "WECHAT_USERINFO_0755_ID"+ MDateUtil.formatDate(new Date(),"yyyy-MM-dd")+".txt";
    File fansDataText = new File(filePath + File.separator + fileName);
    try {
        if (!fansDataText.getParentFile().exists()) {
            fansDataText.getParentFile().mkdirs();
        }
        if (!fansDataText.exists()) {
            fansDataText.createNewFile();
        }
    } catch (IOException e) {
    }

    //创建文件写入流,FileWriter无需指定传输字符集编码格式
    FileWriter fw = null;
    List<String> wxUser = new LinkedList<>();
    try {
        //如果文件存在,则追加内容;如果文件不存在,则创建文件
        fw = new FileWriter(fansDataText,true);
        for (String s : wxUser) {
            fw.write(s);
        }
        wxUser.clear();
    } catch (IOException e) {
    }finally {
        try {
            fw.flush();
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return fansDataText;
}


/**
* 删除path下的所有文件
* @param path
*/
public static void delFile(String path){
   File file = new File(path);
   if (file.isDirectory()){
       File [] files = file.listFiles();
       for (File subFile : files){
           delFile(subFile.getPath());
       }
   }
   file.delete();
}
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下代码来生成CSV文件上传FTP服务器: ```java import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.StandardCharsets; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; public class CSVGenerator { public static void main(String[] args) { generateCSV(); } public static void generateCSV() { String csvFilePath = "path/to/csv/file.csv"; String ftpServer = "ftp.example.com"; int ftpPort = 21; String ftpUser = "username"; String ftpPassword = "password"; String ftpDirectory = "/path/to/ftp/directory/"; try (Writer writer = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(csvFilePath), StandardCharsets.UTF_8))) { // 写入CSV文件内容 writer.write("列1,列2,列3\n"); writer.write("数据1,数据2,数据3\n"); writer.write("数据4,数据5,数据6\n"); // 添加更多数据行... // 上传CSV文件FTP服务器 FTPClient ftpClient = new FTPClient(); ftpClient.connect(ftpServer, ftpPort); ftpClient.login(ftpUser, ftpPassword); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); ftpClient.changeWorkingDirectory(ftpDirectory); ftpClient.storeFile("file.csv", new FileInputStream(csvFilePath)); ftpClient.logout(); ftpClient.disconnect(); System.out.println("CSV文件生成并成功上传FTP服务器!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 请注意,您需要先在项目中添加 Apache Commons Net 库的依赖,以便使用 `FTPClient` 类。您可以在 Maven 中添加以下依赖项: ```xml <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.7.2</version> </dependency> ``` 请将以下变量替换为您自己的值: - `csvFilePath`:CSV文件的本地路径和文件名。 - `ftpServer`:FTP服务器的地址。 - `ftpPort`:FTP服务器的端口号(默认为21)。 - `ftpUser`:FTP服务器的用户名。 - `ftpPassword`:FTP服务器的密码。 - `ftpDirectory`:要上传到的FTP服务器的目录路径。 这段代码会生成一个包含示例数据的CSV文件,并将其上传到指定的FTP服务器。您可以根据自己的需求修改CSV文件的内容和上传的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值