工具中使用到了
org.apache.commons.net.ftp下的FTPClient这个类,然后读取文件,进行解析。发现读取到355行就卡住不动了。
分析发现,直接使用io流读取没有任何问题,大文件也可以读取,所以问题锁定FTPClient的文件流读取有问题。首先将文件的每行减少字符串长度,发现,读取的行数变多,所以定位为缓冲区大小的问题。然后找到FTPClient源码,如下:
public FTPClient()
{
__initDefaults();
__dataTimeout = -1;
__remoteVerificationEnabled = true;
__parserFactory = new DefaultFTPFileEntryParserFactory();
__configuration = null;
}
private void __initDefaults()
{
__dataConnectionMode = ACTIVE_LOCAL_DATA_CONNECTION_MODE;
__passiveHost = null;
__pas