import java.io.*;
import java.util.*;
public class test {
public static void main(String[] args) throws IOException{
// 파일 객체 생성
FileReader fr = new FileReader("d:\\" + File.separator + "test.csv");
// 파일 객체를 스캔하기 위한 객체
Scanner scan = new Scanner(fr);
// rowsMax는 배열에 지정된 행수
// colsMax는 배열에 지정된 열수
// 행의 수를 카운트
// 열의 수를 카운트
int rowsMax = 0, colsMax = 0, rowsCnt = 0, colsCnt = 0;
String buffer = ""; // 파일에서 읽어드린 모든 값을 buffer 에 임시로 저장함.
while(scan.hasNextLine()){
String temp = scan.nextLine();
// 각각 행의 열수를 구함.
for(StringTokenizer st = new StringTokenizer(temp," "); st.hasMoreElements();){
st.nextToken();
colsCnt++;
}
// 모든 행를 buffer에 저장
buffer += temp + "/";
// 가장 큰 열의 수를 구함
if(colsCnt > colsMax) colsMax = colsCnt;
// 열수 초기화
colsCnt = 0;
// 행수 증가
rowsCnt++;
} //end_while
// 최대행수 구함
rowsMax = rowsCnt;
// 배열 생성 csv 기본형태의 행과 열
String[][] iarray = new String[rowsMax][colsMax];
// 배열 생성 csv 행과 열의 바뀐 형태
String[][] jarray = new String[colsMax][rowsMax];
// buffer에 저장된 내용을 token으로 나눔
StringTokenizer st = new StringTokenizer(buffer, "/");
// 행수 초기화
rowsCnt = 0;
while(st.hasMoreElements()){
String[] rowsline = st.nextToken().split(" ");
for (int i = 0; i < colsMax ; i++) {
if(rowsline.length > i) // 열수에 맞추어서 배열 넣음
iarray[rowsCnt][i] = rowsline[i];
else
iarray[rowsCnt][i] = ""; // 각각의 행에 열 수가 맞지 않으면 공백문자
rowsCnt++;
}
// 행과 열을 바꿈
for (int i = 0; i < colsMax; i++) {
for (int j = 0; j < rowsMax; j++) {
jarray[i][j] = iarray[j][i];
}
}
for (int i = 0; i < colsMax ; i++) {
for (int j = 0; j < rowsMax ; j++) {
System.out.print(jarray[i][j] + "\t");
}
System.out.print("\n");
}
}
}
}
이 코드는 저장한후 행과열의위치를 바꾼코드인데..
정상적으로 출력하려면어떻게해야하나요 ㅠㅠ
댓글 0