简体   繁体   English

将输出保存到数组,然后写入.csv文件

[英]Save output to an array then write to a .csv file

I have some code but i need help figuring out how to save the results of that if statement to an array, then saving it to a .csv file. 我有一些代码,但是我需要帮助弄清楚如何将if语句的结果保存到数组,然后将其保存到.csv文件。 Thanks in advance! 提前致谢!

String data = new Scanner( new File("Test.csv") ).useDelimiter("\\A").next();
String terms = new Scanner( new File("Terms.txt") ).useDelimiter("\\A").next();

data.split(",");
terms.split("\n");

if (sourceElement.indexOf(dictionaryElement) > 0)
{
//Save results here
}
NameOfArray.join(",");
//Here I need to write the array to a .csv file... Help?

Also, I'm trying to use a text file full of keywords to search a csv file and save the results to a new csv file... Will this script even work? 另外,我正在尝试使用包含关键字的文本文件来搜索csv文件并将结果保存到新的csv文件中...该脚本甚至可以工作吗? I'm fairly new to coding... 我是编码新手...

Try using this code: 尝试使用以下代码:

//imports
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;

//create the array lists to save the data
private static List<String> readData = new ArrayList<String>();
private static List<String> readTerms = new ArrayList<String>();
private static List<String> splitData = new ArrayList<String>();
private static List<String> finalData = new ArrayList<String>();

public static void main(String[] args) throws Exception{
   readData();
   processData();
   writeFinalData();
}

public static void readData() throws Exception{
//create readers
BufferedReader data = new BufferedReader(new FileReader(new File("Test.csv")));
BufferedReader term = new BufferedReader(new FileReader(new File("Terms.txt")));

//read the data and save it into the array lists
String line;
while((line = term.readLine()) != null){
   readTerms.add(line);
}

while((line = data.readLine()) != null){
   readData.add(line);
}

//close the readers
data.close();
term.close();
}

Now we have two array lists witch hold the data from the .csv file and the data from the terms file. 现在,我们有两个数组列表,其中包含.csv文件中的数据和terms文件中的数据。 The next step is to process this data and write it to a file. 下一步是处理这些数据并将其写入文件。

public static void processData(){
   //looping through every line in the .csv file, spliting it by , and saving every     piece of the data into a new array list
   for(String d : readData){
      String[] split = d.split(",");
      for(int i = 0; i < split.length; i++){
         splitData.add(split[i]);
      }
   }

//searching the .csv file for keywords
for(String s : splitData){
   for(String k : readTerms){
      //testing if the data from the .csv file contains (or is equal to) the keyword. If true then we add it to the array list which holds the final data that will be writen back to the file
      if(s.contains(k)){
         finalData.add(s);
      }
   }
}
}

The last thing left to do is to write the data that matches the keywords back to a file. 剩下要做的最后一件事是将与关键字匹配的数据写回到文件中。

public static void writeFinalData() throws Exception{
   BufferedWriter bw = new BufferedWriter(new FileWriter(new File("words.txt")));

   for(String s : finalData){
      bw.write(s);
      bw.newLine();
   }

   bw.close();
}

Yes, you can use this loop instead: 是的,您可以改用以下循环:

   public static void writeFinalData() throws Exception{
   BufferedWriter bw = new BufferedWriter(new FileWriter(new File("words.txt")));
   String finalLine = "" ; 

   //merge all the data into one line and separate it by “,“
   for(String s : finalData){
      finalLine += s + ","; 
   }

   //remove the comma at the end of the line
   finalLine = finalLine.substring(0, finalLine.length() - 1);

   bw.write(finalLine);

   bw.close();
 }

Here you go. 干得好。 I had to change the whole program. 我不得不改变整个程序。 :) Don't forget the imports again ;) :)不要再忘记进口了;)

// create the array lists to save the data
private static List<String> readTerms = new ArrayList<String>();

private static BufferedWriter bw;

public static void main(String[] args) throws Exception {
    openWriter();
    readData();
    closeWriter();
}

public static void readData() throws Exception {
    // create readers
    BufferedReader data = new BufferedReader(new FileReader(new File(
            "Test.csv")));
    BufferedReader term = new BufferedReader(new FileReader(new File(
            "Terms.txt")));

    // read the data and save it into the array lists
    String line;
    while ((line = term.readLine()) != null) {
        readTerms.add(line);
    }

    while ((line = data.readLine()) != null) {
        processLine(line);
    }

    // close the readers
    data.close();
    term.close();
}

public static void processLine(String line) throws Exception{
    String[] splitLine = line.split(",");
    String finalLine = "";
    for(int i = 0; i < splitLine.length; i++){
    for(String k : readTerms){
        if(splitLine[i].contains(k)){
            finalLine += splitLine[i] + ",";
        }
    }
    }
    finalLine = finalLine.substring(0, finalLine.length() - 1);
    saveLine(finalLine);
}

public static void saveLine(String line) throws Exception{
    bw.write(line);
    bw.newLine();
}

public static void openWriter() throws Exception{
    bw = new BufferedWriter(new FileWriter(new File("words.txt")));
}

public static void closeWriter() throws Exception{
    bw.close();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM