我有一个访问文件的函数,并将每一行设置为arraylist中的新字符串行。如何制作一个循环,将遍历每一行并将该行分为","存在,以便它创建"列。"
实施例: 文件包含行
a, 1, 3, b
3, 2, 5, 6
c, b, d, 4
以下内容将每行保存为arraylist中的字符串
ArrayList<String> result = new ArrayList<String>();
while(input_file.hasNextLine())
{
String line = input_file.nextLine();
result.add(line);
}
从这里开始,我有点难过。我知道下面的代码将占用文件的第1行&#34; a,1,3,b&#34;并在新的arraylist中将其拆分为新的字符串。
String foo = input_file.nextLine();
List<String> myList = new ArrayList<String>(Arrays.asList(foo.split(",")));
有没有办法将这两者结合起来,这样我就可以遍历每一行并拆分一切?从这里开始,我也想知道如何将某些列中的数字加在一起。我知道我可能必须使用for循环来调用每个第n个值(作为列#)并编写一个if语句,只通过通过解析语句检查它们来获取数字列中的值,然后添加它们
答案 0 :(得分:3)
try (Stream<String> fs = Files.lines(path)) {
List<List<String>> linesByElements = fs
.map(s -> Arrays.asList(s.split(",")))
.collect(Collectors.toList());
}
答案 1 :(得分:0)
您可以制作$field1 = 'foo';
$field2 = 'bar';
$insert_QUERY = $db->prepare("INSERT INTO table bogus(field1, field2) VALUES (:field1, :field2)");
$insert_QUERY->bindParam(':field1', $field1);
$insert_QUERY->bindParam(':field2', $field2);
$insert_QUERY->execute();
$databaseErrors = $insert_QUERY->errorInfo();
if( !empty($databaseErrors) ){
$errorInfo = print_r($databaseErrors, true); # true flag returns val rather than print
$errorLogMsg = "error info: $errorInfo"; # do what you wish with this var, write to log file etc...
/*
$errorLogMsg will return something like:
error info:
Array(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table bogus(field1, field2) VALUES ('bar', NULL)' at line 1
)
*/
} else {
# no SQL errors.
}
结果,而不是添加行,您可以添加包含分割字符串的arraylist。
代码看起来像这样。
Arraylist<Arraylist<String>>
ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>():
while(input_file.hasNextLine())
{
String line = input_file.nextLine();
List<String> myList = new ArrayList<String>(Arrays.asList(line.split(",")));
result.add(myList);
}
将包含带有拆分字符串的result.get(0)
。