[英]writing new file using filewriter to csv file
我正在處理具有45312個instance(row)和8個屬性的CSV文件。 我想修改(使用一些數學運算)輸入的csv文件並將其寫入。 要修改CSV,我從每個實例(行)中提取了每個列值(v =“逗號分隔的位置”),然后嘗試對其進行修改。 但是我在這里面臨的問題是,當for循環移至下一個迭代時(例如v = 2的v = 3),那么前一次迭代的所有修改后的實例值(v = 2)都將恢復為原始狀態。 最后,我要處理所有修改的新CSV文件。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.*;
public class Normalization {
public static void main(String[] args)throws IOException {
String filename = "abc.csv";
File file = new File(filename);
BufferedWriter writer = null;
try{
writer = new BufferedWriter(new FileWriter("lyupdated.csv"));
for (int v = 1; v < 8; v++)
{
Scanner inputStream = new Scanner(file);
while (inputStream.hasNext())
{
String data = inputStream.next();
String[] values = data.split(",");
double balance = Double.parseDouble(values[v]);
balance=balance*10;//for mathoperation code simplification
values[v] = String.valueOf(balance);
// 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(",");
}
}
System.out.println(sb.toString());
writer.write(sb.toString()+"\n");
}inputStream.close();
} writer.close();
}
catch (FileNotFoundException ex) {
Logger.getLogger(Normalization.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
您的代碼沒有多大意義。 您需要打開文件,有一個循環來逐行讀取文件,然后將每行分成8列。
但是,請查看您擁有的內容:
for (int v = 1; v < 8; v++) {
Scanner inputStream = new Scanner(file);
所以,
正如Tom在評論中所說,請使用專用於CSV文件解析和生成的庫。 它具有以下優點:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.