1

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

例如:

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

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

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

4

4 回答 4

9

dos2unixunix2dosunix 命令,来自dos2unix包。

于 2012-04-18T11:31:59.800 回答
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();
于 2012-04-18T11:33:58.460 回答
1

如果您没有可用的 dos2unix 实用程序但安装了vimvi

打开你的文件:

vi yourfile.csv或者vim yourfile.csv

要将文件格式更改为 unix 类型:

:setlocal ff=unix

然后保存文件:

:wq!

参考:http: //vim.wikia.com/wiki/File_Format

于 2017-08-02T12:57:02.873 回答
0

使用 vim 检查您的编码格式:

:set fileencoding

在 windows 中,通常是 gb2312,但在 linux 中是 utf-8。

所以你最好通过以下方法将其转换为linux格式:

:set fileencoding=utf-8

然后保存它:wq!

于 2014-08-05T18:07:18.807 回答