>

쉼표로 구분 된 레코드가 포함 된 파일을 읽는 BufferedReader를 읽으려고합니다. 각 문자열 (또는 레코드)을 두 쉼표로 나누고 큰 따옴표를 제거하고 각 문자열을 String 배열의 인덱스에 넣고 싶습니다. 예를 들면 다음과 같습니다.

파일에 다음 줄이 있습니다.

( "0001", "00203", "82409"(줄 바꿈)

"0002", "00204", "82500"(줄 바꿈)

등)

문자열 배열에 0001을 넣고 싶습니다 [1], 00203을 String array [2]에 넣고 싶습니다. 등등 ....

다음 코드는 파일을 탐색하여 2 열의 모든 레코드를 String array [2]에 넣습니다. 즉, 아래 코드를 실행 한 후 System.out.println (arr [2])을 수행하면 00203과 00204가 인쇄되지만 array [2]는 00203이고 array [5]는 00204.

내 코드는 다음과 같습니다 :

public String[] getArray(String source) {
FileInputStream fileinput = new FileInputStream(source);
GZIPInputStream gzip = new GZIPInputStream(fileinput);
InputStreamReader inputstream = new InputStreamReader(gzip);
BufferedReader bufr = new BufferedReader(inputstream);
String str = null;
String[] arr = null;
    while((str = bufr.readLine()) != null) {
    arr = str.replace("\"", "").split("\\s*,\\s*");
}
return arr;


  • 답변 # 1

    Commons CSV는 특정 사용 사례에 맞게 설계되었습니다. 휠을 재발 명하지 마십시오. 아래 코드는 GZipped CSV가 필드와 라인으로 구문 분석되어 사용자가하려는 일처럼 보입니다.

    public String[][] getInfo() throws IOException {
        final CSVParser parser = new CSVParser(new FileReader(new InputStreamReader(new GZIPInputStream(fileinput)), CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(true));
        String[][] result = parser.nextRecord().values();
        return result;
    }
    
    

  • 답변 # 2

    몇 가지 수정 작업이 효과가 있습니다.

    public String[] getArray(String source) {
    FileInputStream fileinput = new FileInputStream(source);
    GZIPInputStream gzip = new GZIPInputStream(fileinput);
    InputStreamReader inputstream = new InputStreamReader(gzip);
    BufferedReader bufr = new BufferedReader(inputstream);
    String str = null;
    List<String> numbers = new LinkedList<String>;
    while((str = bufr.readLine()) != null) {
       String[] localArr = str.split(",");
       for(String intString : localArr){
        numbers.add(intString.trim());
       }
    }
    return arr;
    
    

  • 답변 # 3

    scanner.nextInt ()뿐만 아니라 스캐너 클래스를 사용해 보았습니다. 그런 다음 스트라이핑 할 필요가 없습니다.

    Scanner s = new Scanner(inputstream);
    ArrayList<String> list = new ArrayList<String>();
    while (s.hasNextInt())
        list.add(s.nextInt());
    String[] arr = list.toArray(new String[list.size()]);
    
    

  • 답변 # 4

    테스트되지 않음 :

    arr = str.replaceAll("\"", "").replaceAll("(","").replaceAll(")","").split(",");
    
    

관련 자료

  • 이전 iphone - UITableView의 headerview에서 버튼이 응답하지 않습니다
  • 다음 c++ - QPen setCosmetic이 높은 QGraphicsView 스케일에서 작동하지 않습니다