我有一些数组字符串,如下所示(请注意,每个播放器后面都有一个空格,显示不同的行...),
["user1","track1","player1", "user1","track2","player2", "user1","track3","player3", ...]
我想把这个数组分成两部分(几乎相等)基于行数(此处为空格)。例如,如果数组中有40个空格,我需要存储从第一行到第二行的所有行(第20行)在文件中(我们称之为文件A),并将其余部分放在文件B中。我可以划分数组列表,但无法以正确的方式将其写入CSV文件。
下面是我的代码:
public static void main(String[] args) throws java.lang.Exception {
BufferedReader userlines = new BufferedReader(new FileReader("/..../usertrackplayer.csv"));
FileWriter output = new FileWriter(new File("/.../output.csv"));
String uLine = null;
ArrayList<String> list = new ArrayList<String>();
List<String> arrayList = new ArrayList<String>();
String currentUserId = null;
while ((uLine = userlines.readLine()) != null) {
String[] userData = uLine.split(",");
String userId = userData[0];
if (userId.equals(currentUserId)) {
// Do what ever we need while buffering same userId
}
else{
list.add(uLine);
int division = (int) Math.ceil(list.size()/2);
List<String> sublist = list.subList(0, division); //TO DEVIDE THE DATA OF EACH USERID INTO TWO ALMOST EQUAL PARTS, IT PUT THE FIRST HALF IN SUBLIST
//HERE I NEED TO WRITE THE OUTPUT OF SUBLIST INTO A CSV FILE, BUT HOW????
output.write(sublits); //--> THIS DOES NOT WORK SINCE SUBLIST IS NOT A STRING
currentUserId = userId;
list.clear();
}
list.add(uLine);
}
userlines.close();
output.close();
}
有人能告诉我如何将列表字符串中的数据写入空的csv文件吗?我的第二个问题是:我怎么能在有空间的地方把它们分开,并把它看作一条线。
谢谢你,
1条答案
按热度按时间xvw2m8pv1#
您是否考虑过使用OpenCSV来编写值:http://opencsv.sourceforge.net/
有一个例子,如何写CSV文件,这是非常容易的。
至于你的问题,看起来你不能写这些值,因为Arraylist toString方法不会返回一个逗号分隔的字符串。
查看收集器impl -它将收集所有String对象,并使用您提供的分隔符将它们连接起来。输出如下所示:
我希望这能解决你的问题。如果有什么不清楚的地方告诉我。
阿图尔
编辑2,针对您的问题。
如果你的输入是一个字符串,你可以先用空格把它分开,这样就可以把它分成几行。如果它是一个实际的数组,它就不起作用了。下面是我的例子:
生成的文件如下所示: