我正在查看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文件”? –