I am having several files which I want to convert from Dos to Unix. Is there any API or method which will help me to do this?
-
Possible duplicate of [How to convert DOS/Windows newline (CRLF) to Unix newline (\n) in a Bash script?](https://stackoverflow.com/questions/2613800/how-to-convert-dos-windows-newline-crlf-to-unix-newline-n-in-a-bash-script) – jww Jul 11 '17 at 08:40
5 Answers
There are linux tools that can do this (dos2unix
for example).
In Java it can be done with String.replaceAll()
.
DOS uses \r\n
for line termination, while UNIX uses a single \n
.
String unixText = windowsText.replaceAll("\r\n", "\n"); // DOS2UNIX
So no, no API exists. Yes, it is dead easy.

- 22,322
- 9
- 59
- 108

- 1,529
- 8
- 36
-
Do i need to open all files one by one and replaceAll("\r\n", "\n"). – Code Hungry Feb 21 '12 at 10:35
-
1Yes, of course. Please also note that this only makes sense for ASCII text files! – parasietje Feb 21 '12 at 10:46
There is a utility/command in Linux/Unix called dos2unix
that will help you convert your files from dos to unix format. To install simply type in console(you may need root privileges)
yum install dos2unix
To do the conversion you have to use command dos2unix followed by filename. For example
[aniket@localhost ~]$ dos2unix sample.txt
dos2unix: converting file sample.txt to UNIX format ...
For all files in a directory you can simply use
dos2unix *

- 66,731
- 38
- 279
- 289
-
I don't know why this answer was down-voted. It did, after all, indicate the package name to use when installing from `yum`, which none of the other answers noted. – Garret Wilson Sep 16 '15 at 00:11
-
1@GarretWilson Because that is not Java as stated in the tags (hello from the future :D ) – Itération 122442 Jun 02 '21 at 11:13
Just an alternate way (than the one parasietje described) using dox2unix. Say you all dos files are in one folder
Runtime.getRuntime().exec("dos2unix /path/to/dos/files/*");

- 387
- 2
- 6
- 20
String unixText = windowsText.replaceAll("\r\n", "\n"); // DOS2UNI
The above line should remove all \r but for some reason it also removes the \n so I had to add it back when printing unixText to a file: unixText + "\n"

- 59
- 7
Most unix/linux distributions have utility named unix2dos
and dos2unix
commands.
EDIT:
Just copy your file to unix machine and run dos2unix *
.
You can also find this utility for Windows and do the same.

- 114,158
- 16
- 130
- 208