본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Java(자바)

파일종류, Dos파일 / Unix파일

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 4. 25.

 

 

텍스트 파일(문서 편집기로 열 수 있는 파일형식)은 운영체제에 따라 조금씩 다르다.

유닉스 계열과 윈도우 계열에서 만들어진 파일의 행의 끝부분이 각각 OS에 맞게 나오는 것이 아니라 조금씩 다를 수 있다.(물론 매킨토시도 마찬가지다)

- 유닉스/리눅스의 텍스트 파일은, 각 행의 끝부분이 16진수로 0A 라는 1개의 문자

- 매킨토시(MAC), 윈도우의 텍스트 파일은, 각 행의 끝부분이 16진수로 0D 라는 1개의 문자

이러한 파일들이 문서를 보거나 열때 깨지거나 문제가 발생 할 수 있다.

문서편집기는 문서에 대해 최적화 되어있어서 사실 상관없이 잘 열릴수가 있는데, 가령 해당 파일을 바탕으로 무언가 실행되는 프로그램이 존재한다면 해당 파일을 읽지 못하는 것이다.

아무튼..이러한 경우에는 통상적으로 replace를 통해서 해결 가능하다.

아래소스코드는 유닉스계열 형식의 텍스트 형식 파일을 치환하는 코드이다.

	private void unixToDosFile(String file_path, String file_ext) {
		try {
			File f1 = new File(file_path);  //file_path는 저장된 경로
			File f2 = new File(file_path+ "." + file_ext);  //파일끝형식, 임시로 파일을 만든 후 제거
			BufferedInputStream inp = new BufferedInputStream(new FileInputStream(f1));
			BufferedOutputStream outp = new BufferedOutputStream(new FileOutputStream(f2));
			
			int c;
			while ((c = inp.read()) > 0) {
				if (c == '\n')  //유닉스 형식
					outp.write('\r');  // 윈도우 형식
				outp.write(c);
			}
			inp.close();
			outp.close();
			if (!f1.delete()) {
				System.out.printf("File %s is read-only", file_path);
				return;
			}
			if (!f2.renameTo(f1))
				System.out.printf("File %s is removed; ",file_path);
		}
		catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글