【问题标题】:Convert Windows file to Linux file将 Windows 文件转换为 Linux 文件
【发布时间】:2012-04-29 19:21:44
【问题描述】:

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

例如:

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

我的问题是是否可以通过 Java (

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

【问题讨论】:

  • 你提前知道文件是linux还是windows文件?
  • 对此有几个命令。 dos2unixunix2dos 分别剥离和添加 crs。您也可以使用tr 删除带有tr -d \015 的cr 字符。

标签: java linux file unix file-conversion


【解决方案1】:

dos2unixunix2dos unix 命令,来自 dos2unix 包。

【讨论】:

  • 这些命令在 ubuntu 下被称为 fromdos 和 todos ,如果你在它们原来的名字下找不到的话。
  • 谢谢 - 这正是我所需要的。还有@Disco - 我需要这些信息:)
【解决方案2】:

您可以将 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();

【讨论】:

    【解决方案3】:

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

    打开你的文件:

    vi yourfile.csvvim yourfile.csv

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

    :setlocal ff=unix

    然后保存文件:

    :wq!

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

    【讨论】:

      【解决方案4】:

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

      :set fileencoding
      

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

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

      :set fileencoding=utf-8
      

      然后通过:wq!保存

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-19
        • 1970-01-01
        • 2011-09-03
        • 2018-09-10
        • 2023-04-09
        • 1970-01-01
        相关资源
        最近更新 更多