# Class CSVSaveService

java.lang.Object
org.apache.jmeter.save.CSVSaveService

public final class CSVSaveService extends Object
This class provides a means for saving/reading test results as CSV files.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final char`
`QUOTING_CHAR`

## Method Summary

Modifier and Type
Method
Description
`static String[]`
`csvReadFile(BufferedReader infile, char delim)`
Reads from file and splits input into strings according to the delimiter, taking note of quoted strings.
`static String[]`
`csvSplitString(String line, char delim)`
Reads from String and splits into strings according to the delimiter, taking note of quoted strings.
`static SampleSaveConfiguration`
`getSampleSaveConfiguration(String headerLine, String filename)`
Parse a CSV header line
`static String`
`printableFieldNamesToString()`
Generates the field names for the output file
`static String`
`printableFieldNamesToString(SampleSaveConfiguration saveConfig)`
Generates the field names for the output file
`static void`
`processSamples(String filename, Visualizer visualizer, ResultCollector resultCollector)`
Read Samples from a file; handles quoted strings.
`static String`
`resultToDelimitedString(SampleEvent event)`
Convert a result into a string, where the fields of the result are separated by the default delimiter.
`static String`
`resultToDelimitedString(SampleEvent event, String delimiter)`
Convert a result into a string, where the fields of the result are separated by a specified String.
`static void`
`saveCSVStats(List<?> data, FileWriter writer)`
Method will save aggregate statistics as CSV.
`static void`
`saveCSVStats(List<?> data, FileWriter writer, String[] headers)`
Method will save aggregate statistics as CSV.
`static void`
`saveCSVStats(DefaultTableModel model, FileWriter writer)`
Method saves aggregate statistics (with header names) as CSV from a table model.
`static void`
`saveCSVStats(DefaultTableModel model, FileWriter writer, boolean saveHeaders)`
Method saves aggregate statistics as CSV from a table model.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### QUOTING_CHAR

public static final char QUOTING_CHAR

See Also:
  - Constant Field Values

## Method Details

### processSamples

public static void processSamples(String filename, Visualizer visualizer, ResultCollector resultCollector) throws IOException
Read Samples from a file; handles quoted strings.

Parameters:
  `filename` - input file
  `visualizer` - where to send the results
  `resultCollector` - the parent collector
Throws:
  `IOException` - when the file referenced by `filename` can't be read correctly

### printableFieldNamesToString

public static String printableFieldNamesToString()
Generates the field names for the output file

Returns:
  the field names as a string

### printableFieldNamesToString

public static String printableFieldNamesToString(SampleSaveConfiguration saveConfig)
Generates the field names for the output file

Parameters:
  `saveConfig` - the configuration of what is to be saved
Returns:
  the field names as a string

### getSampleSaveConfiguration

public static SampleSaveConfiguration getSampleSaveConfiguration(String headerLine, String filename)
Parse a CSV header line

Parameters:
  `headerLine` - from CSV file
  `filename` - name of file (for log message only)
Returns:
  config corresponding to the header items found or null if not a header line

### saveCSVStats

public static void saveCSVStats(List<?> data, FileWriter writer) throws IOException
Method will save aggregate statistics as CSV. For now I put it here. Not sure if it should go in the newer SaveService instead of here. if we ever decide to get rid of this class, we'll need to move this method to the new save service.

Parameters:
  `data` - List of data rows
  `writer` - output file
Throws:
  `IOException` - when writing to `writer` fails

### saveCSVStats

public static void saveCSVStats(List<?> data, FileWriter writer, String[] headers) throws IOException
Method will save aggregate statistics as CSV. For now I put it here. Not sure if it should go in the newer SaveService instead of here. if we ever decide to get rid of this class, we'll need to move this method to the new save service.

Parameters:
  `data` - List of data rows
  `writer` - output file
  `headers` - header names (if non-null)
Throws:
  `IOException` - when writing to `writer` fails

### saveCSVStats

public static void saveCSVStats(DefaultTableModel model, FileWriter writer) throws IOException
Method saves aggregate statistics (with header names) as CSV from a table model. Same as `saveCSVStats(List, FileWriter, String[])` except that there is no need to create a List containing the data.

Parameters:
  `model` - table model containing the data
  `writer` - output file
Throws:
  `IOException` - when writing to `writer` fails

### saveCSVStats

public static void saveCSVStats(DefaultTableModel model, FileWriter writer, boolean saveHeaders) throws IOException
Method saves aggregate statistics as CSV from a table model. Same as `saveCSVStats(List, FileWriter, String[])` except that there is no need to create a List containing the data.

Parameters:
  `model` - table model containing the data
  `writer` - output file
  `saveHeaders` - whether or not to save headers
Throws:
  `IOException` - when writing to `writer` fails

### resultToDelimitedString

public static String resultToDelimitedString(SampleEvent event)
Convert a result into a string, where the fields of the result are separated by the default delimiter.

Parameters:
  `event` - the sample event to be converted
Returns:
  the separated value representation of the result

### resultToDelimitedString

public static String resultToDelimitedString(SampleEvent event, String delimiter)
Convert a result into a string, where the fields of the result are separated by a specified String.

Parameters:
  `event` - the sample event to be converted
  `delimiter` - the separation string
Returns:
  the separated value representation of the result

### csvReadFile

public static String[] csvReadFile(BufferedReader infile, char delim) throws IOException
Reads from file and splits input into strings according to the delimiter, taking note of quoted strings.

Handles DOS (CRLF), Unix (LF), and Mac (CR) line-endings equally.

A blank line - or a quoted blank line - both return an array containing a single empty String.

Parameters:
  `infile` - input file - must support mark(1)
  `delim` - delimiter (e.g. comma)
Returns:
  array of strings, will be empty if there is no data, i.e. if the input is at EOF.
Throws:
  `IOException` - also for unexpected quote characters

### csvSplitString

public static String[] csvSplitString(String line, char delim) throws IOException
Reads from String and splits into strings according to the delimiter, taking note of quoted strings. Handles DOS (CRLF), Unix (LF), and Mac (CR) line-endings equally.

Parameters:
  `line` - input line - not `null`
  `delim` - delimiter (e.g. comma)
Returns:
  array of strings
Throws:
  `IOException` - also for unexpected quote characters