91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 9KB
    文件類型: .java
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-16
  • 語言: Java
  • 標(biāo)簽: Java??bt??torrent??

資源簡介

Java解析bt torrent種子文件的工具類代碼分享,只能用炫酷來形容,感興趣就下載看看吧

資源截圖

代碼片段和文件信息

package?download.bt;

import?java.io.BufferedInputStream;
import?java.io.ByteArrayInputStream;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileWriter;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.PrintWriter;
import?java.nio.ByteBuffer;
import?java.nio.CharBuffer;
import?java.nio.charset.Charset;
import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.Iterator;
import?java.util.List;
import?java.util.Map;

/**
?*?解析bt種子
?*/
@SuppressWarnings(value?=?{?“rawtypes“?“unchecked“?“unused“?})
public?class?BDecoder?{
public?static?Charset?BYTE_CHARSET?=?Charset.forName(“UTF-8“);;
public?static?Charset?DEFAULT_CHARSET?=?Charset.forName(“UTF-8“);;
private?boolean?recovery_mode;
public?static?Map?decode(byte[]?data)?throws?IOException?{
return?(new?BDecoder().decodeByteArray(data));
}
public?static?Map?decode(BufferedInputStream?is)?throws?IOException?{
return?(new?BDecoder().decodeStream(is));
}
public?BDecoder()?{
}
public?Map?decodeByteArray(byte[]?data)?throws?IOException?{
return?(decode(new?ByteArrayInputStream(data)));
}
public?Map?decodeStream(BufferedInputStream?data)?throws?IOException?{
object?res?=?decodeInputStream(data?0);
if?(res?==?null)?{
throw?(new?IOException(“BDecoder:?zero?length?file“));
}?else?if?(!(res?instanceof?Map))?{
throw?(new?IOException(“BDecoder:?top?level?isn‘t?a?Map“));
}
return?((Map)?res);
}
private?Map?decode(ByteArrayInputStream?data)?throws?IOException?{
object?res?=?decodeInputStream(data?0);

if?(res?==?null)?{
throw?(new?IOException(“BDecoder:?zero?length?file“));
}?else?if?(!(res?instanceof?Map))?{
throw?(new?IOException(“BDecoder:?top?level?isn‘t?a?Map“));
}

return?((Map)?res);
}

private?object?decodeInputStream(InputStream?bais?int?nesting)

throws?IOException?{
if?(nesting?==?0?&&?!bais.markSupported())?{
throw?new?IOException(“InputStream?must?support?the?mark()?method“);
}
//?set?a?mark
bais.mark(Integer.MAX_VALUE);
//?read?a?byte
int?tempByte?=?bais.read();
//?decide?what?to?do
switch?(tempByte)?{
case?‘d‘:
//?create?a?new?dictionary?object
Map?tempMap?=?new?HashMap();
try?{
//?get?the?key
byte[]?tempByteArray?=?null;
while?((tempByteArray?=?(byte[])?decodeInputStream(bais?nesting?+?1))?!=?null)?{
//?decode?some?more
object?value?=?decodeInputStream(bais?nesting?+?1);
//?add?the?value?to?the?map
CharBuffer?cb?=?BYTE_CHARSET.decode(ByteBuffer.wrap(tempByteArray));
String?key?=?new?String(cb.array()?0?cb.limit());
tempMap.put(key?value);
}
bais.mark(Integer.MAX_VALUE);
tempByte?=?bais.read();
bais.reset();
if?(nesting?>?0?&&?tempByte?==?-1)?{
throw?(new?IOException(“BDecoder:?invalid?input?data?‘e‘?missing?from?end?of?dictionary“));
}
}?catch?(Throwable?e)?{
if?(!recovery_mode)?{

評論

共有 條評論