我无法在任何地方找到一个简单的FTP访问文件的例子,并且FTPClient类(有几个例子使用)没有出现在Android类索引中.我有http访问工作,但我怎么做一个简单的FTP获取?我想要做的就是下载(例如):ftp: //tgftp.nws.noaa.gov/data/observations/metar/stations/KABQ.TXT 它不应该要求登录,更改目录等等. http访问方法的URL似乎不起作用.
这类似于以下问题: 无法从android中的ftp读取文件?
我试过一个简单的:
StringBuilder response = new StringBuilder();
URLConnection ftpConn;
try {
URL netUrl = new URL("ftp://tgftp.nws.noaa.gov/data/observations/metar/stations/KABQ.TXT");
ftpConn = netUrl.openConnection();
BufferedInputStream bufRd = new BufferedInputStream(ftpConn.getInputStream());
int temp;
while ((temp = bufRd.read()) != -1) {
response.append(temp);
}
bufRd.close();
} catch (Exception e) {
return "Failure";
}
Run Code Online (Sandbox Code Playgroud)
但它在getInputStream上获得异常:无法连接到服务器:无法配置数据端口
此外,必须有一种更智能的方法将数据从流缓冲区中拉出,而不是逐字节,不存在?我也找不到.
最后,我需要同时进行http和ftp访问,是否有任何理由不对两种访问类型都使用URLConnection?或者使用HttpConnection for http和URLConnection for ftp更好?
谢谢!
我正在尝试使用正则表达式来匹配java中的数字,例如:
Pattern p = Pattern.compile("(\d+) / (\d+)");
String myRunway = "12 / 1234";
Matcher m = p.matcher(myRunway);
int nrGroups = m.groupCount();
String rwData = m.group(1); //should have 12
String rwLen = m.group(2); //should have 1234
Run Code Online (Sandbox Code Playgroud)
编译器不喜欢\d(对于任何数字),它说唯一有效的转义是\b \t \n \f \r \" \' \\
只是为了yucks然后我尝试(\\d+) / (\\d+)并且它编译,但是不匹配.但是,nrGroups是2,如果没有匹配则没有意义.如何解析java中的数字组?在搜索论坛时,我发现只有C#帖子.
实际上,我最终希望能够匹配"12R/1234"使用(\d+).* / (\d+)"12"和"1234"作为两组,但我简化了上述内容以试图让它工作.
谢谢!