2013-06-04 4 views
3

파일을 파싱 중입니다. 나는 새로운 출력 파일을 만들고 그것에 'byte [] data'를 추가해야 할 것이다. 거기에서 나는 파일의 끝에 다른 많은 'byte [] 데이터를 추가해야 할 것입니다. 출력 파일 이름에 대한 명령 줄 매개 변수를 추가하도록 사용자에게 요청할 것입니다. 이미 파싱 할 파일 이름을 제공하고 있기 때문입니다. 그 파일 이름이 아직 시스템에서 생성되지 않은 경우 나는 하나를 생성해야한다고 생각하고있다.바이너리 파일의 끝에 Byte []를 덧붙임

이제 어떻게해야하는지 잘 모릅니다. 내 프로그램은 현재 DataInputStream을 사용하여 파일을 가져오고 구문 분석합니다. DataOutputStream를 사용하여 추가 할 수 있습니까? 그렇다면 어떻게 파일에 추가하고 겹쳐 쓰지 않을지 궁금합니다.

+1

중요한 것은 파일을 여는 방법입니다. 추가 vs 간단한 출력을 열어야합니다. –

답변

16

그렇다면 어떻게 파일에 추가하고 덮어 쓰지 않을지 궁금합니다.

그건 쉽습니다. DataOutputStream도 필요하지 않습니다. 그냥 FileOutputStreamthe constructor with an append parameter를 사용, 괜찮 :

FileOutputStream output = new FileOutputStream("filename", true); 
try { 
    output.write(data); 
} finally { 
    output.close(); 
} 

또는 사용하여 Java 7의 try-with-resources :

try (FileOutputStream output = new FileOutputStream("filename", true)) { 
    output.write(data); 
} 

어떤 이유로 필요 DataOutputStream경우, 당신은 단지 같은 방법으로 연 FileOutputStream을 포장 할 수 있습니다 .

+0

굉장한 감사합니다! 두 번째 true 매개 변수는 내가 가정 한 추가 옵션입니까? 알았어, 응! –

+0

@johnstamos : 예 - 대답의 링크를 따르십시오. –

0
File file =new File("your-file"); 
FileWriter fileWritter = new FileWriter(file.getName(),true); 
BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 
bufferWritter.write(your-string); 
bufferWritter.close(); 

try-catch 블록에 coruse를 넣습니다.

+3

이것은 텍스트에는 적합하지만 바이너리에는 적합하지 않습니다. –

2
Files.write(new Path('/path/to/file'), byteArray, StandardOpenOption.APPEND); 

이것은 바이트 추가 용입니다. 예외에 대해 잊지 마세요

+2

안녕하십니까. 답변을 제공해 주셔서 감사합니다. 이것은 코드 만의 답변이기 때문에 품질이 낮은 게시물 대기열에서 검토 할 수 있습니다. 우리는 그 코드를 정말로 좋아하지 않습니다. 당신이 안으로 들어가고 싶다면, 당신은 환영합니다,하지만 당신은 당신의 대답에 좀 더 노력해야합니다. 코드가 OP 문제를 해결하는 방법에 대한 설명으로 둘러싸여 야합니다. 원한다면 [ask]와 [answer]를 읽으면 약간 정리할 수 있습니다. 너의 시간 동안 타이. –