トレントファイルをダウンロードしてトラッカーリンクを変更するアプリケーションを作成しています(パスキーを置き換えるだけです)。しかし、変更したファイルを保存すると、トレントクライアントで開くことができないため、おそらくエンコードに大きな問題があります。
ファイルをダウンロードして変更するコードを書きました:
@Override
public void exeucte(String link) throws IOException {
FileOutputStream fos = null;
try {
URL website = new URL(link);
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
String fileName = getFileName(link);
fos = new FileOutputStream(fileName);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
replacePassKey(fileName);
} finally {
if (fos != null)
fos.close();
}
}
private void replacePassKey(String fileName) throws IOException {
File originalFile = new File(fileName);
String lines = readLines(originalFile);
String replacedLines = lines.replaceAll("(.*passkey=)(.*)(:comment27.*)", "$1" + PASS_KEY + "$3");
originalFile.delete();
writeReplacedLines(replacedLines, originalFile);
}
private void writeReplacedLines(String replacedLines, File file) throws IOException {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(file));
bw.write(replacedLines);
} finally {
if (bw != null)
bw.close();
}
}
private String readLines(File originalFile) throws IOException {
RandomAccessFile raf = null;
String lines = null;
try {
raf = new RandomAccessFile(originalFile, "r");
byte[] bytes = new byte[(int) raf.length()];
raf.read(bytes);
lines = new String(bytes, Charset.forName("UTF8"));
} finally {
if (raf != null)
raf.close();
}
return lines;
}
トレントクライアントで変更されていないファイルを開くことができるため(KomodoEditでダウンロードしたファイルを変更する場合も)、ダウンロードが機能すると確信しています。しかし、ファイルを変更して置き換えた文字列を保存すると、クライアントはそれを開くことができず、無効なデータについて不平を言います。
誰でも何か考えがありますか?UTF8 が間違っているか、コードの一部を変更する必要があるのでしょうか?