Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / CSVFileReader.schelp
blob4cd2a4df4cf9c8978d77de8b6921826917052e82
1 class:: CSVFileReader
2 summary:: file reader for comma separated data
3 related:: Classes/File
4 categories:: Files
6 description::
7 CSVFileReader reads comma-separated text files into 2D arrays line by line.
9 For tab delimited files use link::Classes/TabFileReader::. For semi-colon-delimited files use link::Classes/SemiColonFileReader::. For space-delimited files, or custom delimiters, use link::Classes/FileReader::.
11 Examples::
13 code::
15 // write a test file:
16 f = File("CSVReadTest.sc", "w");
17 f.write(
18 "Some,comma,delimited,items, in line 1
20 and then, some more, with several commas,,,, in line 3
23 f.close;
27         // open file, read and put strings into array, close file.
28 x = CSVFileReader.read("CSVReadTest.sc").postcs;
30         // can skip empty lines:
31 x = CSVFileReader.read("CSVReadTest.sc", true).postcs;
33         // can skip blank entries caused by multiple commas:
34 x = CSVFileReader.read("CSVReadTest.sc", true, true).postcs;
36         // do file open/close by hand if you prefer:
37 f = File("CSVReadTest.sc", "r"); f.isOpen;
38 t = CSVFileReader(f);
39 t.read(true, true).postcs;
40 f.close;
43 // write a test file with numbers:
44 f = File("CSVReadTestNum.sc", "w");
46 (1..10).do { |n| f.write(n.asString ++ ","); };
47 f.close;
50 x = CSVFileReader.read("CSVReadTestNum.sc", true, true).postcs;
51 x.collect(_.collect(_.interpret));      // convert to numbers.
53         // or do it immediately:
54 x = CSVFileReader.readInterpret("CSVReadTestNum.sc").postcs;
57 // write a test file with several lines of numbers:
58 f = File("CSVReadTestNum.sc", "w");
60 (1..100).do { |n|
61         f.write(n.asString ++ if (n % 10 != 0, ",", Char.nl)); };
62 f.close;
66 x = CSVFileReader.readInterpret("CSVReadTestNum.sc", true, true).postln;