Java言語初心者です。
開発環境はeclipseでプログラミングをしています。
読み込んだファイルを5文字区切りでカンマを入れたいのですが、
実行するたびにフリーズが出て困っています。
int型のdata変数は210000の配列と
String型のcsvData変数は1000の配列を用意しています。
int型は適切だと思いますが、String型があまりよくわかっていないので、
適当に割り当てました。
ここが悪いなどの指摘をよろしくお願いします。
以下はソースの一部です
//ファイル変換クラス
public class csvConvert implements FileConverts{
private String fileName;
private int[] data;
private String[] csvData;
csvConvert(String fileName, int[] data, String[] csvData){ this.fileName = fileName; this.data = data; this.csvData = csvData; } public String[] convert(){ int cnt = 0; int i = 0; String tmp = ""; for(int c : data){ cnt++; tmp += c; if(cnt == 5){ System.out.print("a"); tmp += ","; csvData[i++] += tmp; cnt = 0; } } for(int a : data){ System.out.print((char)a); } return csvData; }
}
//追記 06/27 22:21
//ファイル読み込みクラス
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Read implements FileRead{
private String fileName; private int data[]; Read(String fileName, int[] data){ this.fileName = fileName; this.data = data; } public int[] read(){ int c, i=0; int cnt = 0; try { BufferedReader br = new BufferedReader(new FileReader(fileName)); //最初の一行を捨てる br.readLine(); //最後までファイルを読み込む while((c = br.read()) != -1){ cnt++; //10文字目から文字を読み込む if(cnt > 9){ while((c = br.read()) != '\n'){ data[i++] = c; } data[i++] = '\n'; cnt = 0; } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return data; }
}
回答2件
あなたの回答
tips
プレビュー