一番下のアップデートを読む
私はこれについて数時間頭を悩ませてきましたが、これを理解できないようです。
単体テストでは、ファイルを一時的な場所にコピーし、その上で soms シナリオを実行します。このファイルのコピーは非常に奇妙なことをします。これは PDF ファイルでのみ発生し、画像は影響を受けませんでした。ファイルサイズをコピー/収集するいくつかの異なる方法を試しましたが、すべて同じことを行います。
- file.length() は、ウィンドウのリストと一致しません。Java は、ファイルが大きいと判断します (約 25% 多いバイト数)。
- ファイル/バイトが読み取り/コピー/etcされると、JAVAが報告するバイト数になります。(多すぎる)
- Intellij は、入力ファイルと出力ファイルの両方を同一として報告します。(intellij が差分に Java を使用している可能性があります)
- 両方のファイル notepad++ を開くと、いくつかの違いがあります。すべてのテキストベースの情報 (pdf) は同一です。「ストリーム」タグでラップされたデータは異なります!
オリジナル:
xÚ¥'=OÃ@†÷ü</p>
新しいファイル:
xڥ�=O�@���
これにより、エンコードの問題などを疑うことができます...
しかし...
- バイトごとのコピーでこれが発生するのはなぜですか?
- 単純な file.length() を使用すると、なぜこれが発生するのですか?
誰かがこのようなものに出くわしたり、どの方向に検索すればよいか知っていますか?
リクエストに応じて: これはファイルをコピーするために使用されるコードです:
assetFile = TempFileUtil.createTempFile(transformationId + "_" + inputFile.getName());
FileUtils.copyFile(inputFile, assetFile);
createTempFile メソッドは次のとおりです。
public static File createTempFile(final String filename) {
return new File(baseOutputPath, filename);
}
アップデート
障害はコピーではなく、単体テストでのリソースの処理方法にあることがわかりました。/src/resources/ フォルダーの内容は、targer/test-classes/ フォルダーに移動/リンク/コピーされるため、単体テストなどでアクセスできます...そして、それが間違っているところです...私はまだ見つけようとしていますなぜこれが失敗するのか。