我有要读取的CSV文件,我存储在字符串中,我需要在每个","我的意见就像
名称,ID,说明,emailId Micheal,234655,"下一行问题的测试说明 谢谢和问候,Mike",Mike @ yahoo.com
请帮助我。
此致 维杰
enter code here
import java.io.*;
import java.util.logging.*;
import java.util.ArrayList;
import java.util.List;
public class ReadingCSVFile {
public static void main(String args[])
{
StringBuilder sb =new StringBuilder();
int n;
String inputStream;
String Name[] =new String[30];
List l1 = new ArrayList();
try
{
FileInputStream fis =new fileInputStream("C:/Users/vijaykumar.naga/Desktop/Abc.txt");
FileOutputStream fos = new FileOutputStream("C:/Users/vijaykumar.naga/Desktop/Output.txt");
int ch;
while((ch = fis.read()) != -1){
sb.append((char)ch);
}
System.out.println("The InputString is " +sb.toString());
String abcd =sb.toString();
for(int i=0; i<30; i++)
{
l1.add(abcd.split(","));
System.out.println("The Names are " +l1);
}
}
catch(Exception e)
{
}
}
}
答案 0 :(得分:0)
请参阅代码的修订版并附上说明:
import java.io.*;
import java.util.logging.*;
import java.util.ArrayList;
import java.util.List;
public class ReadingCSVFile {
public static void main(String args[])
{
StringBuilder sb =new StringBuilder();
int n;
String inputStream;
String Name[] =new String[30];
List<String> l1 = new ArrayList<>(); //Use generics <> operator
try
{
FileInputStream fis =new fileInputStream("C:/Users/vijaykumar.naga/Desktop/Abc.txt");
FileOutputStream fos = new FileOutputStream("C:/Users/vijaykumar.naga/Desktop/Output.txt");
int ch;
while((ch = fis.read()) != -1){
sb.append((char)ch);
}
System.out.println("The InputString is " +sb.toString());
String abcd =sb.toString();
/*for(int i=0; i<30; i++)
{
l1.add(abcd.split(",")); //This is wrong. abcd.split(",") will return String[]
System.out.println("The Names are " +l1);
}
}*****This loop is not needed*/
//As you already read the content in abcd variable, do as follows
l1.addAll(Arrays.asList(abcd.split(",")));
catch(Exception e)
{
}
}
}
答案 1 :(得分:0)
这是我用来读取CSV文件的简单解决方案。
Scanner sc = null;
try {
sc = new Scanner(new File("test.csv"));
String s = null;
String[] array;
while(sc.hasNext()){
s = sc.nextLine();
array = s.split(",");
System.out.println(Arrays.toString(array));
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} finally {
if(sc != null) sc.close();
}
基本上,这将使用扫描仪一次读取一行,可能不是最好的但是40行,我真的不在乎;)
然后,我使用逗号分割行,小心如果在值中使用,
,则不在此处进行检查。
然后,我在控制台中打印数组。
编辑:
try (Scanner sc = new Scanner(new File("test.csv"))){
String s = null;
String[] array;
while(sc.hasNext()){
s = sc.nextLine();
array = s.split(",");
// Do what you want with the array, here I just print the result
System.out.println(Arrays.toString(array));
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
答案 2 :(得分:0)
我建议使用正则表达式:
([A-ZA-Z] +)\,(\ d +)\,(\ “+ \”。。| +)\,(\ W + @ \ W + \ W +)
答案 3 :(得分:-1)
您可以尝试split()
使用以下语法
String[] parts = string.split(",");
或者您可以将StringTokenizer与令牌,
希望这有帮助