안드로이드 앱에서 읽기 기능을 개발하여 장치의 CSV 파일을 읽을 수 있습니다. 여기 내 코드입니다 :CSV 파일을 읽을 때 Nullpointer 예외가 발생했습니다.
Button btninsert;
TextView CSV1;
TextView CSV2;
TextView CSV3;
TextView CSV4;
String[][] Data;
int numrecord=0;
@Override
public void onCreate(Bundle savedInstanceState) {
//create the activity
super.onCreate(savedInstanceState);
//set up the layout
setContentView(R.layout.activity_chico);
btninsert = (Button) findViewById(R.id.Insert);
CSV1 = (TextView) findViewById(R.id.CSV1);
CSV2 = (TextView) findViewById(R.id.CSV2);
CSV3 = (TextView) findViewById(R.id.CSV3);
CSV4 = (TextView) findViewById(R.id.CSV4);
if(new File(Environment.getExternalStorageDirectory()+"/Chico/record.csv").exists()){
btninsert.setVisibility(View.VISIBLE);
}else{
btninsert.setVisibility(View.GONE);
}
CSV1.setVisibility(View.GONE);
CSV2.setVisibility(View.GONE);
CSV3.setVisibility(View.GONE);
CSV4.setVisibility(View.GONE);
btninsert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
btninsert.setVisibility(View.GONE);
try {
BufferedReader reader = new BufferedReader(new FileReader(Environment.getExternalStorageDirectory()+"/Chico/record.csv"));
try {
String line;
while ((line = reader.readLine()) != null){
String[] RowData = line.split(",");
Data[numrecord][0]=RowData[0];
Data[numrecord][1]=RowData[1];
Data[numrecord][2]=RowData[2];
Data[numrecord][3]=RowData[3];
numrecord++;
}
} catch (IOException ex) {
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i=0; i<numrecord; i++){
if(i==0){
CSV1.setVisibility(View.VISIBLE);
CSV2.setVisibility(View.VISIBLE);
CSV3.setVisibility(View.VISIBLE);
CSV4.setVisibility(View.VISIBLE);
CSV1.setText(Data[i][0]);
CSV2.setText(Data[i][1]);
CSV3.setText(Data[i][2]);
CSV4.setText(Data[i][3]);
}else{
CSV1.append(" "+Data[i][0]);
CSV2.setText(" "+Data[i][1]);
CSV3.setText(" "+Data[i][2]);
CSV4.setText(" "+Data[i][3]);
}
}
}
});
}
그러나, 나는 버튼을 클릭 할 때마다, 시스템이 예기치 않게 종료되고 오류 메시지가 널 포인터 예외가 몇 줄을 다음에서 발생 설명한 오류 로그에 나타납니다.
Data[numrecord][0]=RowData[0];
Data[numrecord][1]=RowData[1];
Data[numrecord][2]=RowData[2];
Data[numrecord][3]=RowData[3];
누군가가 예외의 원인을 말해 줄 수 있습니까?
샘플 CSV 파일에는 두 개의 행이 포함되어 있으며 각 행에는 네 개의 열이 있습니다. 예에 불과 유사 나는 아래합니다
1 1 in 8/6/2012
1 1 out 8/6/2012
내가 while 루프에서 다음 코드를 사용하게되면, 그것을 잘 작동합니다 : 나는 문제가 데이터 배열
에 생각하는 이유while ((line = reader.readLine()) != null){
String[] RowData = line.split(",");
if(numrecord==0) {
CSV1.setText(RowData[0]);
CSV2.setText(RowData[1]);
CSV3.setText(RowData[2]);
CSV4.setText(RowData[3]);
} else {
CSV1.append(" "+RowData[0]);
CSV2.append(" "+RowData[1]);
CSV3.append(" "+RowData[2]);
CSV4.append(" "+RowData[3]);
}
numrecord++;
}
예제에 쉼표가 없습니다. 처리중인 파일에 쉼표가 있는지 확인하십시오. –
String [] [] Data를 초기화해야한다고 생각합니다. 일부 크기와 함께 . 뭔가, String [] [] Data = new String [2] [4]; – user370305
하지만 배열을 초기화하면 크기가 고정됩니다. 행할 수는 있지만 고정 된 수의 열을 가질 수있는 CSV 파일을 읽으려는 것이기 때문입니다. – Conrad