2012-04-18 154 views
1

我在Linux机器上运行时作为shell脚本的一部分运行Windows文件时出现问题,我想知道是否可以将Windows创建的文件“转换”为使用Java的Linux文件或可能是一个Linux命令?将Windows文件转换为Linux文件

例如:

如果我上传在Windows中创建一个CSV文件,然后使用nano我可以看到该文件保存在DOS格式的服务器上。我可以使用M-D在DOS和Linux格式之间切换,并将其另存为Linux文件。

我的问题是,是否可以通过Java(< -preference)或通过Linux命令来实现?

我试过剥离回车sed -i 's/{ctrl-v}{ctrl-m}//g' [file]但这并没有帮助解决这个问题。

+0

你事先知道,如果文件将是一个Linux或Windows文件? – 2012-04-18 11:31:13

+0

这里有几条命令。 'dos2unix'和'unix2dos'条并分别添加crs。您也可以使用'tr'来删除cr字符'tr -d \ 015'。 – ConcernedOfTunbridgeWells 2012-04-18 11:33:07

回答

8

dos2unixunix2dos unix命令,来自dos2unix包。

+2

这些命令在ubuntu下被称为fromdos和todos,如果你不能以原来的名字找到它们的话。 – 2012-04-18 11:33:46

+0

谢谢 - 正是我所需要的。还@迪斯科 - 我需要的信息:) – 2012-04-18 12:25:56

1

可以使用的BufferedReader与被包含的FileReader度日行的文件行,然后做你想做的与该线(例如他们推到具有正确的行结尾另一个文件。

File relFile = new File("....."); 
BufferedReader read = new BufferedReader(new FileReader(relFile)); 
File targetFile = new File("...."); 
FileWriter fwri = new FileWriter(targetFile); 
String line; 
while ((line = read.readLine()) != null) { 
    fwri.write(line+"\n"); // if you want the system line delimiter use the System property for that. 
} 
fwri.flush(); 
fwri.close(); 
+0

+1,谢谢你是个好主意 – 2012-04-18 12:26:58

0

使用VIM检查你的编码格式:

:set fileencoding 
在Windows

,它通常是GB2312,但在Linux中是utf-8

所以你最好将其转换为里。马钱格式通过下面的方法:

:set fileencoding=utf-8 

然后:wq!

0

保存它,如果你没有DOS2UNIX的工具可用,但你有VIM安装

打开文件:

vi yourfile.csvvim yourfile.csv

要更改文件格式UNIX类型:

:wq!

参考:

:setlocal ff=unix

然后将该文件保存http://vim.wikia.com/wiki/File_Format