2010-03-25 5 views
0

텍스트 파일에 텍스트가 나타나는 방식으로 간단한 텍스트 파일의 내용을 Java로 인쇄하려고합니다.자바에서 텍스트 파일의 정확한 내용 인쇄

인쇄물의 텍스트 파일과 내용이 같지만 형식이 동일하지 않습니다. 탭 및 줄 바꿈은 인쇄물에서 무시됩니다. 어떤 도움이라도 대단히 감사하겠습니다.

+3

우리 방법을 보여 올바른 인코딩을 사용합니다 : 당신이 다음 RTBarnard + 사용의 답을 정상 SYS-밖으로 인쇄를 의미하는 경우

그것을 읽고 그것을 어떻게 인쇄 할 수 있습니까? 그렇지 않으면 우리는 단지 추측하고 있습니다. –

+1

일부 코드를 게시하지 않으면 우리가 한 일을 추측 할 수 없습니다. – bmargulies

답변

-1

FileUtils.readFileToString(file)은 (commons-io)해야하지만 큰 파일은 VM에 할당 된 전체 메모리를 차지할 수 있으므로주의해야합니다.

사용할 수있는 또 다른 사항은 IOUtils.copy(new FileInputStream(..), outputStream)입니다. - 하나의 스트림 (이 경우 파일 스트림)에서 다른 스트림으로 모든 것을 전송합니다.

+0

readFileToString을 사용하면 정확한 내용 (질문에서 묻는 내용)을 얻을 수 없습니다. 입력 파일에 마지막에 개행이 포함되어 있지 않으면 입력 파일에 추가됩니다. – gyorgyabraham

2

@ Joachim Sauer와 @bmargulies가 지적했듯이, 자세한 내용이 없으므로 우리는 문제가 무엇인지 정확하게 말할 수 없습니다.

하지만 코드를 대비하기 위해 다음은 인수로 제공된 파일을 읽은 다음 char-by-char을 읽습니다 (즉, 유니 코드 문자를 지원함). 이것이 목표를 달성하지 못한다면, 실패한 특정 (작은) 입력 예가 좋을 것입니다.

import java.io.*; 
class printout { 
    public static void main (String[] args) { 
     if (args.length < 1) { 
     System.err.println ("Usage: printout <filename>"); 
     System.exit (1); 
     } 

     File sourceFile = new File (args[0]); 
     FileReader fr = null; 
     try { 
     fr = new FileReader (sourceFile); 
     int inChar; 

     while ((inChar = fr.read()) != -1) { 
      System.out.printf ("%c", inChar); 
     } 
     } catch (IOException e) { 
     System.err.printf ("Failure while reading %s: %s\n", 
          args[0], e.getMessage()); 
     e.printStackTrace(); 
     } finally { 
     try { 
      if (fr != null) { fr.close(); } 
     } catch (IOException e) { 
      System.err.printf ("Error closing file reader: %s\n", 
           e.getMessage()); 
      e.printStackTrace(); 
     } 
     } 
    } 
} 
+0

if (args.length ");? –

+0

1.) 바이트 단위로 읽지 않는 코드 2를 포맷하기 위해 HTML 태그를 사용하지 마십시오. 문자 단위로 읽습니다. –

+0

@ Joachim Sauer : 바이트 단위가 아닌 char-by-char 읽기에 대한 내 오류를 지적 해 주셔서 감사합니다. 그에 따라 응답 텍스트를 수정했습니다. – RTBarnard

0

인쇄 할 때 this을 의미합니까? 그런 다음 모든 \ t를 예를 들어로 바꾸십시오. 4 공백과 \ n 새로운 drawString 호출.

또 다른 가능성은 JTextComponent 또는 JEditorPane을 채우고 인쇄하는 것입니다.

BufferedReader reader = new BufferedReader(
    new InputStreamReader(new FileReader("file.txt"), "UTF-8"); 
reader.readLine(); etc 

이 내 눈에 쉽게 당신이 항상