イメージファイルの最後に別のファイルが追加され、文字列区切り文字で区切られています。私がやろうとしているのは、Javaの2つのファイルを別々のファイルに書き込んで、それを自分のファイルに追加することです。しかし、いくつかのソリューションを試しましたが、ファイルが破損してしまったり、誰かが正しい方向に私を向けることができますか?Javaのファイルを区切り文字で読み取る
これまで私がこれまでに持っていた最高の解決策は、ほとんど動作しますが、ファイルが少し壊れています。
public class FileExtractor {
private static final String START_OF_FILE_DATA = "SOFD34qjknhwe3rjkhw";
public void extractFile(String[] files)
{
try
{
String first = readFileToString(files[0]);
Pattern p1 = Pattern.compile(START_OF_FILE_DATA + "(.*)" + START_OF_FILE_DATA + "(.*)", Pattern.DOTALL);
Matcher matcher1 = p1.matcher(first);
String filename = "";
if(matcher1.find())
{
filename = matcher1.group(1);
}
else
{
//throw exception of corrupted file
}
FileOutputStream out = new FileOutputStream(new File("buildtest/" + filename));
out.write(matcher1.group(2).getBytes("cp1251"), 0, matcher1.group(2).length());
for (int i = 1; i < files.length; i++)
{
String content = readFileToString(files[i]);
Pattern p = Pattern.compile(START_OF_FILE_DATA + "(.*)", Pattern.DOTALL);
Matcher matcher = p.matcher(content);
if(matcher.find())
{
out.write(matcher.group(1).getBytes("cp1251"), 0, matcher.group(1).length());
}
else
{
//throw exception of corrupted file
}
}
out.close();
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
private String readFileToString(String file)
{
byte[] buffer = new byte[(int) new File(file).length()];
BufferedInputStream f = null;
try {
f = new BufferedInputStream(new FileInputStream(file));
f.read(buffer);
}
catch (Exception e)
{
}
finally
{
if (f != null) {
try {
f.close();
} catch (IOException ignored) {
}
}
}
String ret = "";
try
{
ret = new String(buffer, "cp1251");
}
catch(Exception e)
{
}
return ret;
}
することができますどのようにあなたがそれをやろうとしているかを示すコードを投稿してください。 – casablanca
文字列が追加されたときに有効な画像ファイルであると思われますか? –
これまでのコードを追加しました。 – Yawn