2013-12-09 2 views
0

오라클 데이터베이스 &에서 블롭 데이터를 읽고 텍스트 파일에 쓰고 있습니다. 내 데이터베이스에 & 시스템이라는 두 개의 열이 있습니다. 내 테이블에 100 카운트있다. 그러나 마지막 행만 내 텍스트 행에 쓰고 있습니다. 아래 코드는 제가 시도한 코드입니다.블로 브 데이터로 파일 쓰기

rs =stmt.executeQuery("select Number, system from system"); 
Blob lob = null; 


while (rs.next()) { 
    String RECID = rs.getString(1); 
    System.out.println("Number"+ Number); 

    lob=rs.getBlob("system"); 
    byte[] bdata = lob.getBytes(1, (int) lob.length()); 
    String text = new String(bdata); 
    System.out.println("text"+ text); 

    System.out.println("rs value"+ lob); 
    String test=null; 
    test=RECID+":"+text; 
    FileOutputStream fos = new FileOutputStream("C:/DataRead/system.txt"); 
    DataOutputStream dos = new DataOutputStream(fos); 
    dos.writeBytes(test); 

    dos.close(); 
} 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 

} 
} 

텍스트 파일에서 나는 100 번째 레코드 만 얻고 다른 99 번째 행은 쓰지 않습니다.

+0

각 반복의 출력 파일을 다시, 가장 확실하게 이전 버전을 삭제 . –

+0

감사합니다 알렉시스, 좋은 조언 각 iteartion에 대한 출력 파일을 여는 방법 – user2742540

답변

0

while 루프에서 매번 기존 텍스트를 바꿉니다.

이 시도 :

FileOutputStream fos = new FileOutputStream("C:/DataRead/system.txt"); 
DataOutputStream dos = new DataOutputStream(fos); 
while (rs.next()) { 
    String RECID = rs.getString(1); 
    System.out.println("Number"+ Number); 
    lob=rs.getBlob("system"); 
    byte[] bdata = lob.getBytes(1, (int) lob.length()); 
    String text = new String(bdata); 
    System.out.println("text"+ text); 

    System.out.println("rs value"+ lob); 
    String test=null; 
    test=RECID+":"+text; 

    dos.writeBytes(test+"\n"); 
} 
dos.close(); 
+0

감사 Bhushan,하지만 모든 데이터가 한 줄에 쓰고 있습니다. 각 줄 끝에서 \ n을 사용하는 방법 – user2742540

+0

@ user2742540 줄 바꿈에'\ n '을 사용할 수 있습니다. 그에 따라 코드를 편집했습니다. – Bhushan

+0

@ user2742540 여러분을 환영합니다. 문제가 해결되면 대답을 수락 할 수 있습니다. – Bhushan

0

이 코드

FileOutputStream fos = new FileOutputStream("C:/DataRead/system.txt"); 

으로 라인을 교체 :

FileOutputStream fos = new FileOutputStream("C:/DataRead/system.txt", true); 
관련 문제