我正在查看30天內特定股票的表現。我從雅虎財經下載了數據,該數據顯示爲一個CSV文件。如果我想在我的數據集中創建一個新列以顯示使用java refer to column H as where the output should appear打開和關閉之間的每日百分比變化,我該如何做?用java創建一個新的CSV文件以添加一個新列
在此先感謝!
我正在查看30天內特定股票的表現。我從雅虎財經下載了數據,該數據顯示爲一個CSV文件。如果我想在我的數據集中創建一個新列以顯示使用java refer to column H as where the output should appear打開和關閉之間的每日百分比變化,我該如何做?用java創建一個新的CSV文件以添加一個新列
在此先感謝!
您可以逐行編輯文件並使用concat()函數添加分隔符。
用FileReader or BufferedReader打開文件,然後開始解析。
官方的Javadoc:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#concat(java.lang.String)
也this請參閱。
隨着OpenCSV:http://opencsv.sourceforge.net/
public class OpenCSVTest {
public static void main(String[] args) {
StringWriter target = new StringWriter();
try(CSVReader reader = new CSVReader(new StringReader("my,test"));
CSVWriter writer = new CSVWriter(target);) {
for(String[] line : reader) {
String[] added = Arrays.copyOf(line, line.length + 1);
added[added.length-1] = "addition";
writer.writeNext(added);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(target.toString());
}
}
,可隨時更換StringReader
和StringWriter
與你的輸入和輸出。讀者會在你的csv中遍歷每一行。您可以複製原始行並添加新列並將其寫入目標。
故障代碼:
try(CSVReader reader = new CSVReader(new StringReader("my,test"));
CSVWriter writer = new CSVWriter(target);) { ... }
這是一個嘗試,以資源塊。它確保讀者和作者完成後關閉。
for(String[] line : reader) {
String[] added = Arrays.copyOf(line, line.length + 1);
added[added.length-1] = "addition";
writer.writeNext(added);
}
這是循環的標準。 CSVReader實現了Iterable
接口,它使我們能夠直接在for循環中使用它。
Arrays.copyOf(line, line.length + 1);
是一個函數,它創建傳遞給它的數組的副本,但是具有新的大小。因爲你想添加一列,所以我們複製一個原始數組my,test
並在其末尾添加1個空格,然後我們可以通過這樣做來爲其分配新值:added[added.length-1] = "addition";
最後,我們只是將其傳遞給作者,然後將這些值正確寫入目標中,在這種情況下爲StringWriter
,在您的情況下可能是文件。
你的意思是「如何編寫CSV文件」? –