爲了解析CSV文件,我在堆棧和Web中搜索了很多。
但我不會得到我想要的。如何讀取CSV中的值並將值留給它
我有這個CSV格式的表格,
我要的是,如果我給了「ID」(這是0,1,2,3 ......),它應該返回我值的權利,即,如果我給
「2」它應該返回我「你好,你好嗎?」。
「4」它應該返回我「你喜歡什麼茶?」
如何實現這一目標?
現在我把我的CSV文件保存在原始文件夾中。
任何幫助將apppreciated
爲了解析CSV文件,我在堆棧和Web中搜索了很多。
但我不會得到我想要的。如何讀取CSV中的值並將值留給它
我有這個CSV格式的表格,
我要的是,如果我給了「ID」(這是0,1,2,3 ......),它應該返回我值的權利,即,如果我給
「2」它應該返回我「你好,你好嗎?」。
「4」它應該返回我「你喜歡什麼茶?」
如何實現這一目標?
現在我把我的CSV文件保存在原始文件夾中。
任何幫助將apppreciated
可以在CSV保存數據: -
ArrayList<TableData> arrayList=new ArrayList<>();
arrayList.add(new TableData(1,"Hello"));
arrayList.add(new TableData(2,"How are u"));
arrayList.add(new TableData(3,"I am fine"));
arrayList.add(new TableData(4,"Thank You"));
File file;
File root = Environment.getExternalStorageDirectory();
if (root.canWrite()){
File dir = new File (root.getAbsolutePath() + "/PersonData");
dir.mkdirs();
file = new File(dir, "Data.csv");
FileOutputStream out = null;
try {
// write to byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
for (TableData element : arrayList) {
dos.writeUTF(String.valueOf(element.id));
dos.writeUTF(String.valueOf(element.name));
}
byte[] bytes = baos.toByteArray();
out = new FileOutputStream(file);
out.write(bytes);
out.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
而且Retrive它作爲: -
File file;
File root = Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/PersonData");
dir.mkdirs();
file = new File(dir, "Data.csv");
Uri u1 = null;
u1 = Uri.fromFile(file);
try {
FileInputStream inputStream=new FileInputStream(file);
String input="2";
String previousValue="";
ByteArrayInputStream bais = new ByteArrayInputStream(readFully(inputStream));
DataInputStream in = new DataInputStream(bais);
while (in.available() > 0) {
String element = in.readUTF();
if(previousValue.equalsIgnoreCase(input)){
textView.setText(element);
}
previousValue=element;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
方法轉換的InputStream字節] : -
public static byte[] readFully(InputStream input) throws IOException
{
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = input.read(buffer)) != -1)
{
output.write(buffer, 0, bytesRead);
}
return output.toByteArray();
}
好吧,我會試試這個,這看起來不錯。 –
它正在工作,也許我已經對它做了一些修改。 –
閱讀CSV文件創建一個單獨的類: -
public class CSVFile {
InputStream inputStream;
public CSVFile(InputStream inputStream){
this.inputStream = inputStream;
}
public List read(){
List resultList = new ArrayList();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String csvLine;
while ((csvLine = reader.readLine()) != null) {
String[] row = csvLine.split(",");
resultList.add(row);
}
}
catch (IOException ex) {
throw new RuntimeException("Error in reading CSV file: "+ex);
}
finally {
try {
inputStream.close();
}
catch (IOException e) {
throw new RuntimeException("Error while closing input stream: "+e);
}
}
return resultList;
}
}
現在,在您的活動稱之爲: -
String input="2";
InputStream inputStream = getResources().openRawResource(R.raw.sample);
CSVFile csvFile = new CSVFile(inputStream);
List scoreList = csvFile.read();
for(int i=0;i<scoreList.size();i++){
Object data_list=scoreList.get(i);
String a[]= (String[]) data_list;
String id=a[0];
String value=a[1];
if(input.equalsIgnoreCase(id)){
Log.d("TAG", "Value Found "+value);
}
}
「我已經搜查棧和網絡了很多,解析一個CSV文件。 「這聽起來有點可疑,因爲它是第一個結果,如果我谷歌'android解析csv文件'。請參閱http://stackoverflow.com/questions/5360628/get-and-parse-csv-file-in-android – 0xDEADC0DE
但我想從ID,即0,1,2 ..我有n的數值字符串 –
我不想遍歷循環, –