2015-01-16 3 views
0

이 자바 프로그램을 사용하여 프로그램의 지정된 URL에서 CSV 파일 내용을 읽는 중입니다. 문제는 마지막 64 개 레코드를 가져 오지 못한다는 것입니다. 즉, 마지막 64.Plz 도움말을 제외하고는 지정된 myHello.csv 파일에 기록합니다. 당신은지정된 URL에서 CSV 파일 읽기

package com.aamir; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.net.URLConnection; 

public class TestGetCSV { 


    public static void main(String[] args) { 

     try { 

       URL url12 = new URL("https://wd5-impl-services1.workday.com/ccx/service/customreport2//ISU-YINT061-ProjectsFE/YINT061.05-OpenText?format=csv"); 

       URLConnection uc = url12.openConnection(); 

       String userpass = "username" + ":" + "password"; 
       String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes()); 

       uc.setRequestProperty ("Authorization", basicAuth); 
       /* HttpURLConnection conn = (HttpURLConnection)uc; 
       conn.setInstanceFollowRedirects(false); 
       */ 

       InputStreamReader inStream = new InputStreamReader(uc.getInputStream()); 
       BufferedReader buff= new BufferedReader(inStream); 

       String content2 = null; 

       BufferedWriter bf = new BufferedWriter(new FileWriter("D:/myHello.csv")); 
       while ((content2 = buff.readLine()) != null) { 

        bf.write(content2); 

        content2 = buff.readLine(); 
        bf.flush(); 
       } 
       } 
       catch (Exception e){ 
        e.printStackTrace(); 
        System.out.print("KHONG TAI DUOC DU LIEU"); 
       } 
       System.out.println("done"); 

       } 


} 

답변

1

는 "더블"각 루프에서의 BufferedReader에서 소모. 각 루프에 대해 readLine()을 두 번 호출하지만 한 번만 씁니다 (다른 모든 행을 삭제할 것입니다).

+0

하나의 readLine()을 제거했지만 그 결과가 여전히 동일하고 .csv 파일에 마지막 64 개 행이 표시되지 않았습니다. – Aamir

+0

@Zawinski - 포함하지 않은 코드에서 BufferedWriter를 닫으시겠습니까? – jtahlborn