이미지 파일의 끝에는 문자열 구분 기호로 구분 된 다른 파일이 추가됩니다. 내가 뭘 하려는지 자바 파일의 끝에 첨부 파일을 작성하는 두 개의 파일을 분리하는 것입니다, 나는 그들 중 하나가 파일을 손상하거나 절망적으로 비효율적 인 몇 가지 솔루션을 시도했지만. 누군가 올바른 방향으로 나를 가르쳐 주시겠습니까?delimeter로 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