如何从csv中提取数据并将其放在java中的文本文件中

时间:2018-04-12 16:10:09

标签: java csv text

我正在尝试从csv获取某些数据的程序,并将其放在我的文本文件的某些行中。我的csv每个Sale都有多行/列。它看起来像:

  

销售,编号,代码,交货,日期(标题下方的值)
  Sale1,3333,3213,May18,Arp10

我的文本文件需要来自csv的数据,在某些时候它会显示“type”,所以我将它作为: 键“标签” 键“标签” 输入“”

我的代码是:

public static void ChangeFile () throws FileNotFoundException, IOException {

 BufferedReader br = new BufferedReader(new FileReader("\\C:\\Users\\READ.txt\\"));

 Scanner s = new Scanner(br);
 for(String line; (line = br.readLine()) != null; ) {
       String word = "type";
 int totalCount = 0;
 int wordCount =0;

 while (s.hasNext()){
     totalCount++;
     if(s.next().equals(word)){
         wordCount++;
     }
   }

//  int counter = 0;
// 
 ArrayList<String> lines = new ArrayList<String>();

System.out.println("word count: " + wordCount);
       System.out.println("total count"+ totalCount);

   }

} }

我上面的函数也在文本文件和csv中读取。我不知道每个文件文件中的所有单词都存储在一个数组中,并且每个单词都用于工作“类型”并对类型进行计数。现在它只是计算出现的单词类型的数量。注意:我不需要替换每个单独的类型,只需要在单词之后添加一些需要的数据。在从csv获取数据时苦苦挣扎。

导入我的csv的代码是:

try

{

ArrayList<String> ar = new ArrayList<String>(); 

File csvFile = new File("C:\\Users\\book1.csv\\"); 
BufferedReader br = new BufferedReader(new FileReader(csvFile)); 

String line = ""; 

StringTokenizer st = null; 

int lineNumber = 0; 

int tokenNumber = 0; 

while ((line = br.readLine()) != null) { 

String[] arr = line.split(",");
arr = line.split(" "); // gets rid of space


//for the first line it'll print
for (int i=0; i<arr.length; i++){


//String.format("%-10s",arr[i]);
System.out.println(arr[i]+" " ); // h
}
lineNumber++;

//use comma as token separator 
System.out.println();
} 
} 


catch(IOException ex) { 

ex.printStackTrace();

}

1 个答案:

答案 0 :(得分:1)

您应该使用正确的解析器,因为它更可靠。

univocity-parsers比使用line.split(",");更快,并且会处理字段中的引号,行结尾和分隔符等内容。它还会清除您在默认情况下遇到问题的空白区域。

试试这段代码:

CsvParserSettings settings = new CsvParserSettings();
settings.detectFormatAutomatically();

CsvParser parser = new CsvParser(settings);
List<String[]> allRows = parser.parseAll(new File("C:\\Users\\READ.txt"));

希望它有所帮助。

免责声明:我是这个图书馆的作者。它是开源和免费的(Apache 2.0许可证)