首页 > 其他分享 >\\:ip 访问网络上的SMB共享目录、IP接口传输数据、ftp://ip ftp传输

\\:ip 访问网络上的SMB共享目录、IP接口传输数据、ftp://ip ftp传输

时间:2024-11-05 20:21:11浏览次数:1  
标签:ftp String ip shareFolder 传输数据 localFolder file new ftpClient

一、访问网络上的SMB共享目录

1.导入JAR包

		<!--访问网络上的SMB共享目录-->
		<dependency>
			<groupId>com.hierynomus</groupId>
			<artifactId>smbj</artifactId>
			<version>0.13.0</version>
		</dependency>

2.使用

            // 定义连接信息
          String username = "Administrator";
          String password = "Password";
          String server = "20.135.22.2";
          String shareName = "TDMRecv";
          String folderPath = "folder";

          SMBClient client = new SMBClient();
          try {
              Connection connection = client.connect(server);
              AuthenticationContext ac = new AuthenticationContext(username, password.toCharArray(), null);
              Session session = connection.authenticate(ac);
              // 连接到共享
              DiskShare shareFolder = (DiskShare) session.connectShare(shareName);
              // 获取共享目录下的文件列表
              List<FileInfo> files = shareFolder.list(folderPath);
              for (FileInfo file : files) {
                  System.out.println("文件名: " + file.getName());
                  System.out.println("大小: " + file.getSize() + " 字节");
                  System.out.println("是否为目录: " + file.isDirectory());
                  System.out.println("最后修改时间: " + new Date(file.getLastModified()));
                  System.out.println("------------------------");
              }

              // 本地文件夹路径
              File localFolder = new File(String.valueOf(targetFolder));
              // 上传文件夹
              uploadFolder(shareFolder, localFolder ,localFolder);

              FileUtils.deleteDirectory(new File(localFolder.getAbsolutePath()));
          } catch (IOException e) {
              log.error("无法连接到共享或创建文件夹或删除文件失败:" + e.getMessage());
              e.printStackTrace();
          }
private static void uploadFolder(DiskShare shareFolder, File localFolder, File localFolder2) throws IOException {
        if (!localFolder.isDirectory()) {
            log.error("本地文件夹不存在:"+localFolder);
        }
        String localFolderName = "MESRecv\\"+localFolder.getName();
        if (!shareFolder.folderExists(localFolderName)&&localFolder2.getName().equals(localFolder.getName())) {
            // 创建文件夹
            shareFolder.mkdir(localFolderName);
            log.info("文件夹创建成功:" + localFolderName);
        } else {
            log.info("文件夹已存在:" + localFolderName);
        }
        // 遍历本地文件夹
        File[] files = localFolder.listFiles();
        if (files != null) {
            for (File file : files) {
                String remoteFolderPath = "MESRecv\\"+localFolder.getName()+"\\"+file.getName();
                if (file.isDirectory()) {
                    if (!shareFolder.folderExists(remoteFolderPath)) {
                        // 创建文件夹
                        shareFolder.mkdir(remoteFolderPath);
                        uploadFolder(shareFolder, file.getAbsoluteFile(), localFolder2);
                        log.info("文件夹创建成功:"+remoteFolderPath);
                    } else {
                        log.info("文件夹已存在:"+localFolderName);
                    }
                } else {
                    // 上传本地文件到共享目录
                    FileInputStream fis = null;
                    SmbFileOutputStream fos = null;
                    try {
                        File localFile = new File(file.getAbsolutePath());

                        // 上传文件
                        fis = new FileInputStream(localFile);
                        String absolutePath = file.getAbsolutePath();
                        String temporaryFolder = absolutePath.substring(absolutePath.indexOf("temporaryFolder") + "temporaryFolder".length() + 1);
                        String replace = temporaryFolder.replace("\\", "/");
                        String remoteFolderPath1 = "MESRecv/" + replace;
                        String path = "smb://" + shareFolder.getSmbPath().getHostname() + "/" + shareFolder.getSmbPath().getShareName() + "/" + remoteFolderPath1;

                        SmbFile smbFile = new SmbFile(path);
                        fos = new SmbFileOutputStream(smbFile);
                        byte[] buffer = new byte[4096];
                        int bytesRead;
                        while ((bytesRead = fis.read(buffer)) != -1) {
                            fos.write(buffer, 0, bytesRead);
                        }
                        log.info("文件上传成功:" + file.getAbsolutePath());
                    } finally {
                        IOUtils.closeQuietly(fis);
                        IOUtils.closeQuietly(fos);
                    }
                }
            }
        }
    }

接口传输

1.示例

          String apiUrl = "http://20.135.168.23:8080/test/receive"; // 替换为实际API URL
          String requestData = "{\"key\":\"value\"}"; // 替换为实际请求数据
          log.info("json数据:"+requestData);
            try {
                // 创建URL对象
                URL url = new URL(apiUrl);

                // 打开与URL之间的连接
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();

                // 设置请求方法为POST
                connection.setRequestMethod("POST");

                // 设置允许输出
                connection.setDoOutput(true);

                // 设置请求头
                connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

                // 写入请求数据
                DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
                byte[] input = requestData.getBytes();
                outputStream.write(input, 0, input.length);
                outputStream.flush();
                outputStream.close();

                // 获取响应码
                int responseCode = connection.getResponseCode();
                if (responseCode == HttpURLConnection.HTTP_OK) { // 成功
                    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                    String inputLine;
                    StringBuilder response = new StringBuilder();
                    while ((inputLine = in.readLine()) != null) {
                        response.append(inputLine);
                    }
                    in.close();
                    // 打印响应内容
                    log.info("响应内容: " + response.toString());
                } else {
                    log.error("请求失败: HTTP error code: " + responseCode);
                }
                // 关闭连接
                connection.disconnect();
            } catch (Exception e) {
                e.printStackTrace();
            }

ftp传输

1.获取文件

        FTPClient ftpClient = new FTPClient();
        ftpClient.connect(ip, port);
        // 执行其他初始化操作,例如登录等
        ftpClient.login("administrator", "admin@123");
        ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
        ftpClient.enterLocalPassiveMode();
        ftpClient.setControlEncoding("utf-8");
        // 获取最后一个FTP回复的回复代码的整数值。
        int replyCode = ftpClient.getReplyCode();
        // 确定回复代码是否为肯定的完成响应
        if (!FTPReply.isPositiveCompletion(replyCode)) {
             System.out.println("FTP连接失败");
        }
        System.out.println("FTP连接成功");
        // 获取第二级目录中的文件
        FTPFile[] twoFtpFiles = ftpClient.listFiles("/" + DIRNAME);
        for (FTPFile file : twoFtpFiles) {

        }

2.传输文件

        FTPClient ftpClient = new FTPClient();
        ftpClient.connect("20.135.22.2", 21);
        ftpClient.login("Administrator", "Password123");
        ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
        ftpClient.enterLocalPassiveMode();
        ftpClient.setControlEncoding("utf-8");
        ftpClient.changeWorkingDirectory("/MESSJB");
        InputStream inputStream = file.getInputStream();
        ftpClient.storeFile(task.get("commCode").toString()+ ".docx", inputStream);
        inputStream.close();
        ftpClient.logout();
        ftpClient.disconnect();

标签:ftp,String,ip,shareFolder,传输数据,localFolder,file,new,ftpClient
From: https://www.cnblogs.com/chahune/p/18528691

相关文章

  • javascript跨域问题排查
    什么是跨域问题跨域是指浏览器从一个域名的网页去请求另一个域名下的资源。出于安全考虑,浏览器会限制这种跨域请求。例如,网页http://example1.com中的JavaScript代码尝试去获取http://example2.com的数据,这就会触发跨域问题。同源策略规定,只有当协议(如http、https)、域名(如ex......
  • Javascript 代码规范
    JavaScript代码规范是编程时遵循的一套规则和最佳实践,以确保代码的可读性、可维护性和一致性。以下是一些关键的JavaScript常见代码规范:1.使用严格模式在所有脚本文件或函数开头添加‘usestrict’;声明,以启用严格模式(strictmode),这有助于捕获潜在的错误并避免不明......
  • [61] (多校联训) A层冲刺NOIP2024模拟赛18
    无论从什么意义上都能称得上挂75分的一场A.选彩笔好题答案显然可以二分突然发现我好像专长二分答案钦定最大差值\(dx\),将所有物品以\((r,g,b)\)看成三维空间坐标内的点,原问题可以转化成问空间里一个边长为\(dx\)的立方体内是否有至少\(k\)个点考虑到值域不大,可......
  • 【某NOIP模拟赛T2 - 旅游】--线段树优化 DP 的魅力
    题意:数轴上在起点\(s\)和终点\(t\)间的整点中有\(n\)个关键点,第\(i\)个关键点位置为\(c_i\),可获得\(m_i\)的价值。你可以从起点开始,每次跳至多\(z\)个点(跨过中间的点),而每到达一个\(s\)以外的点需要支付\(a\)的代价,求走到终点的最大价值。\(0\les\lec_i\let......
  • Rockchip SoC 赋能 AI 与视觉创新:推动智能设备的未来发展
    随着人工智能(AI)和计算机视觉技术不断推动各行各业的创新,Rockchip已成为提供强大系统级芯片(SoC)解决方案的领先厂商。该公司已开发出多款集成AI功能并支持先进多媒体与视觉技术的SoC,非常适合用于AI驱动的边缘计算、安全监控、机器人技术等应用领域。armsomboard本文将探讨......
  • noip模拟赛6
    A选彩笔(rgb)一眼转三维坐标系搞。但是最开始想歪了,以为要转曼哈顿距离,但是发现三维切比雪夫距离不支持转曼哈顿距离。补充一个知识点\(x\)维的曼哈顿距离支持转到\(2^{x-1}\)维的切比雪夫距离所以一维和二维可以直接转化,但是三维及以上就不行了。三维曼哈顿距离等同于某......
  • nginx反向代理实现获取用户真实ip
    参考资料:https://www.cnblogs.com/mzhaox/p/11214747.html用户真实ip是223.193.x.x,发送请求,请求经过NginxA->NginxB->最后到达后端服务nginxA的关键配置:http{include/etc/nginx/mime.types;default_typeapplication/octet-stream;log_formatm......
  • [DMY]2024 NOIP 模拟赛 Day 4
    不会暴搜不会差分约束不会三维DP不会根号分治不会卡常……赛时电脑没网,换了一台。T1看不懂题面,还以为是\(n-x\),然后有人给我说根据题目名称可以推断是\(n\%x\)。……[从现在开始到T2,我写完了,但是被人用手势删了,没保存,不想重新写了,所以就这样了]……T2赛后发现差分约束......
  • ipv6解析导致 blackbox_exporter 采集http监控项超时问题
    排查过程打开blackbox_exporter后台http://127.0.0.1:9115/找到监控项对应的DebugLogs点开查看日志:Logsfortheprobe:ts=2024-11-05T06:38:25.081157873Zcaller=main.go:304module=http_2xxtarget=http://img.xxx.cn/test.jpglevel=infomsg="Beginningprobe"p......
  • Rockylinux9 配置静态IP地址
    像往常一样,安装完操作系统后,准备配置网络,直接cd到网络配置文件夹中,发现之前配置的参数文件没有了,只剩下一个readme,神奇,打开看看 大致总结下来就是:主要变化是从Network-Scripts转为用NetworkManager和key文件,而不是基于 ifcfg 的文件。在RockyLinux9中,NetworkManag......