2012-04-18 161 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