不想上班的K 2019-04-01 11:19 采纳率: 0%
浏览 271

Android FTP断点续传文件问题,当断网时FTP把文字直接锁死了咋办?

Android FTP断点续传文件问题,当断网时FTP把文件直接锁死了,要延时好久才能重新上传。有网上的方法说是建立临时文件,如果锁死重新开上传,但是达不到断点续传的效果?need help

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-08 16:55
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Android中实现FTP断点续传,您可以使用Apache Commons FTP库。以下是一个简单的示例:

    import org.apache.commons.fileupload.util.Streams;
    import java.io.*;
    import java.net.Socket;
    
    public class FtpClient {
        private static final String HOST = "192.168.0.1"; // 服务器地址
        private static final int PORT = 21; // 端口号
        private Socket socket;
        private InputStream inStream;
        private OutputStream outStream;
        private File file;
    
        public void connect() throws IOException {
            socket = new Socket(HOST, PORT);
            inStream = socket.getInputStream();
            outStream = socket.getOutputStream();
    
            try {
                Files.copy(new File(file).toPath(), new FileOutputStream(socket.getOutputStream()), StandardCopyOption.REPLACE_EXISTING);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    
        public void disconnect() throws IOException {
            socket.close();
        }
    
        public boolean isConnected() {
            return socket != null && socket.isConnected();
        }
    
        public void uploadFile(String filename, byte[] data) throws IOException {
            if (!isConnected()) {
                throw new IOException("Not connected");
            }
    
            try (OutputStream out = new BufferedOutputStream(outStream)) {
                Streams.write(out, data);
            }
        }
    
        public void downloadFile(String filename, byte[] data) throws IOException {
            if (!isConnected()) {
                throw new IOException("Not connected");
            }
    
            try (InputStream in = new BufferedInputStream(inStream)) {
                Streams.read(data, in);
            }
        }
    }
    

    在这个例子中,我们首先创建一个Socket连接到服务器,并尝试将文件写入到socket上。如果连接成功,我们可以从socket读取数据。

    注意:这个例子中的下载功能是基于字节流的,而不是传统的断点续传功能。如果您需要真正的断点续传功能,您可能需要修改这个例子以支持断点续传。

    评论

报告相同问题?