/**
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation.
* <p>
* THE AUTHOR PROVIDES THIS SOFTWARE ''AS IS'' AND ANY EXPRESSED OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.icodejava.products.commons.csv;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
/**
* @author Vlad
* www.icodejava.com
* Convert Tab Separate Value (TSV) file to Comma Separated Value (CSV) file
*/
public class TSVToCSVConverter {
public static void main(String[] args) throws Exception {
//The input TSV File
String tsvFilePath = "/Users/kushal/Desktop/NLP/imdb_data_set/01_10_2019/title.basics.tsv";
//The output CSV File
String csvFilePath = "/Users/kushal/Desktop/NLP/imdb_data_set/01_10_2019/title.basics.csv";
convertTSVToCSVFile(csvFilePath, tsvFilePath);
}
/**
* Converts a TSV file into CSV file.
* - Reads one line at a time
* - Replaces Double Quotes with Single Quotes
* - Puts Double Quotes Around Every Field
* - Fileds in the output are separated by comma.
*
* @param csvFilePath
* @param tsvFilePath
* @throws IOException
*/
private static void convertTSVToCSVFile(String csvFilePath, String tsvFilePath) throws IOException {
//TODO: If outfile does not exist, create one.
StringTokenizer tokenizer;
try (BufferedReader br = new BufferedReader(new FileReader(tsvFilePath));
PrintWriter writer = new PrintWriter(new FileWriter(csvFilePath));) {
int i = 0;
for (String line; (line = br.readLine()) != null; ) {
i++;
if (i % 10000 == 0) {
System.out.println("Processed: " + i);
}
tokenizer = new StringTokenizer(line, "\t");
String csvLine = "";
String token;
while (tokenizer.hasMoreTokens()) {
token = tokenizer.nextToken().replaceAll("\"", "'");
csvLine += "\"" + token + "\",";
}
if (csvLine.endsWith(",")) {
csvLine = csvLine.substring(0, csvLine.length() - 1);
}
writer.write(csvLine + System.getProperty("line.separator"));
}
}
}
private static String convertToCSV(String line) {
String csv = "";
line = line.replaceAll("\t", ",");
return line;
}
}
Using Java to Convert TSV File to CSV File
Bookmark the permalink.