-2
寫入CSV文件即時通訊使用具有大型數據集的大型csv文件,大約17個屬性和大約40000行。我想以相反的順序寫第i行的每一行的位置(第1行第i行,「分隔值替換爲第40000th」,「分隔...第2行替換爲39999 ...同樣全部)(這裏我提取了第12個值= ith)。我怎麼能這樣做請幫助我。使用修改
package demo;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.FileWriter;
import java.io.*;
/**
*
/**
*
* @author admin
*/
public class Demo {
/**
* @param args the command line arguments
*/
public static void main(String[] args)throws IOException {
String filename = "bank-full.csv";
File file = new File(filename);
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter("bank-full_updated.csv"));
}
catch (IOException e) {
}
try {
Scanner inputStream = new Scanner(file);
inputStream.next();
double Tuple;
int count=0;
Tuple = 0;
while (inputStream.hasNext())
{
String data = inputStream.next();
String[] values = data.split(";");
double balance = Double.parseDouble(values[11]);
//balance=balance+1;
values[11] = String.valueOf(balance);
count=count+1;
// iterate through the values and build a string out of them
StringBuilder sb = new StringBuilder();
// String newData = sb.toString();
for (int i = 0; i < values.length; i++) {
sb.append(values[i]);
if (i < values.length - 1) {
sb.append(";");
}
}
// get the new string
System.out.println(sb.toString());
writer.write(sb.toString()+"\n");
}
writer.close();
inputStream.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
您發佈的代碼僅與問題陳述隱約相關。請說明是否需要反轉文件的行(第40,000次與第1次交換,第2次第39,999次swappend,...)或者是否實際需要修改行(如代碼所示)。你永遠不會說應該增加一個值 - 但是你的代碼連續增加了第12項(不是第11項!)。 – laune 2015-02-24 15:07:45
sry爲此...現在我已經做出了改變..實際上我想以相反的順序寫入這些值。 – 2015-02-24 15:25:01
哪個「值」?文件的行或每行的字段? (如果後者:爲什麼你發佈的代碼甚至沒有接近?)如果你需要反轉這些行:讀取並存儲行在'List'中,然後從最後一次迭代到第一次,如@OferLando所示。 –
laune
2015-02-24 16:00:03