小编jus*_*urv的帖子

对包含带数字的字符串的文件名数组进行排序

对于我的项目,我需要从FTP服务器下载一个zip文件,该服务器每年发布一个新的zip文件大约13次.我需要按照服务器的命名约定下载最新文件:
Prefix + release number (one or two digits) + year (two digits) + suffix + ".zip"

例如: ALFP1016F.zip

前缀将始终相同(ALFP),后缀为F或P(代表"完整"或"部分";我只需要以后缀F结尾的文件).最重要的是,我需要忽略的目录中还有其他几个文件,因为它们有不同的前缀.然后,我需要按照此优先级顺序获取数组中的最新文件:

  1. 最近一年.当然'99不应该被视为最近一年.
  2. 最新版本号

例如,如果我有这个文件名列表(完整服务器目录):

1stpage712.pdf
1stpage914.pdf
ALFP1015F.zip
ALFP1015P.zip
ALFP716F.zip
ALFP716P.zip
FSFP816F.zip
FSFP816P.zip
Run Code Online (Sandbox Code Playgroud)

我的预期产量是
ALFP716F.zip 因为16是最近的一年,7是该年度的最新版本

.

这是我到目前为止所做的:

//necessary imports
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

//initialize FTP client
ftpClient = new FTPClient();

try {
    //connect to server
    ftpClient.connect(server, port);
    ftpClient.login(username, password);
    ftpClient.enterLocalPassiveMode();
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

    //list all names from server
    String[] filenames = ftpClient.listNames();

    //return expected file name
    String expectedFileName = …
Run Code Online (Sandbox Code Playgroud)

java arrays sorting algorithm android

10
推荐指数
2
解决办法
608
查看次数

为什么在C中允许未定义的行为

我最近一直在努力学习C.来自Java,它让我感到惊讶,你可以执行声明为"未定义"的某些操作.

这对我来说似乎非常不安全.我理解程序员不负责执行未定义的操作,但为什么它甚至可以从一开始就被允许?例如,为什么编译器不能捕获超出范围的数组索引,甚至悬挂指针?你最终只能访问你永远不应该访问的内存块,没有明显的理由.

作为比较,Java 更加确定你不会做任何愚蠢的事情,像热饼一样抛出异常.

当然,必须有一个理由允许这样做吗?它是什么?

答案:据我了解,主要原因是表现.此外,Java确实有未定义的行为,尽管没有这样标记.

编辑:限制问题到C

c undefined-behavior

6
推荐指数
2
解决办法
275
查看次数

标签 统计

algorithm ×1

android ×1

arrays ×1

c ×1

java ×1

sorting ×1

undefined-behavior ×1