java - Parse .txt to .csv -
is possible create java program recognizes text in .txt file , write in .csv file? if yes,how start such problem?
my .txt file text1 |text 2 somehow char "|" , split 2 cells.
this simple in java 8:
public static void main(string[] args) throws exception { final path path = paths.get("path", "to", "folder"); final path txt = path.resolve("myfile.txt"); final path csv = path.resolve("myfile.csv"); try ( final stream<string> lines = files.lines(txt); final printwriter pw = new printwriter(files.newbufferedwriter(csv, standardopenoption.create_new))) { lines.map((line) -> line.split("\\|")). map((line) -> stream.of(line).collect(collectors.joining(","))). foreach(pw::println); } }
first files @ path
objects.
open printwriter
destination path
.
now java 8 stream processing lambdas:
files.lines(txt)
streams lines filemap((line) -> line.split("\\|"))
splits each linestring[]
on|
map((line) -> stream.of(line).collect(collectors.joining(",")))
joins individualstring[]
again using,
foreach(pw::println)
writes new lines destination file.
using import static
:
try ( final stream<string> lines = files.lines(txt); final printwriter pw = new printwriter(newbufferedwriter(csv, standardopenoption.create_new))) { lines.map((line) -> line.split("\\|")). map((line) -> stream.of(line).collect(joining(","))). foreach(pw::println); }
as java 8 released yesterday here java 7 solution:
public static void main(string[] args) throws exception { final path path = paths.get("path", "to", "folder"); final path txt = path.resolve("myfile.txt"); final path csv = path.resolve("myfile.csv"); final charset utf8 = charset.forname("utf-8"); try ( final scanner scanner = new scanner(files.newbufferedreader(txt, utf8)); final printwriter pw = new printwriter(files.newbufferedwriter(csv, utf8, standardopenoption.create_new))) { while (scanner.hasnextline()) { pw.println(scanner.nextline().replace('|', ',')); } } }
again, import static
:
try ( final scanner scanner = new scanner(newbufferedreader(txt, utf8)); final printwriter pw = new printwriter(newbufferedwriter(csv, utf8, standardopenoption.create_new))) { while (scanner.hasnextline()) { pw.println(scanner.nextline().replace('|', ',')); } }
Comments
Post a Comment