gpt4 book ai didi

java - 从互联网下载文件并提取其中的一些内容

转载 作者:行者123 更新时间:2023-12-01 16:59:12 28 4
gpt4 key购买 nike

我正在创建一个从互联网下载文件的程序。我对链接进行了子串,因为我想从链接中获取文件名。这就是我到目前为止所拥有的。

package main;

import java.io.FileOutputStream;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;

public class Main {

public static void main(String[] args) {

String url = "https://www.dropbox.com/s/8awaehjdh81fqam/CacheName.zip?dl=1";
int lastSlashIndex = url.lastIndexOf('/');
String filename= url.substring(lastSlashIndex + 1, 5);

try{
URL website = new URL(url);
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(filename);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
}catch(Exception e){ e.printStackTrace(); }

}

}

它不下载文件,我收到此错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -37
at java.lang.String.substring(Unknown Source)
at main.Main.main(Main.java:14)

最佳答案

根据 Java 文档,public String substring(int beginIndex, int endIndex) 是调用 substring 方法的方式。按照您的调用方式,它从 lastSlashIndex + 1 开始,到索引 5 结束(向后移动,不起作用)。这就是为什么异常说它超出索引 -37 的范围。

您想要更像 url.substring(lastSlashIndex + 1, lastSlashIndex + 1 + 5);

关于java - 从互联网下载文件并提取其中的一些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29038230/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com