Search code examples
javashellunixlsfilewriter

Unix: "ls" command shows files with ? after the extension


I have written a shell script (test.sh) using Java. This shell script actually does a copy job from one file to the other. After the execution of the shell script I have opened the directory from Console and typed ls. It shows the output file with ? after the extension.

example : foo.csv?

File execFile = new File(file);
    FileWriter fwFile;
    try {
        fwFile = new FileWriter(execFile);
        execFile.setExecutable(true);
        BufferedWriter bwFile = new BufferedWriter(fwFile);
        bwFile.write(strOutput.substring(0, 2));
        bwFile.write("\r\n");
        bwFile.write("cd " + strOutput);
        bwFile.write("\r\n");
        bwFile.write("mkdir " + strOutput);
        bwFile.write("\r\n");
        bwFile.write(strUnixPath);
        bwFile.write("\r\n");
        bwFile.write("cd " + strWorkingPath + IPlatinumConstants.FS+"lib"+IPlatinumConstants.FS+"Unx");
        bwFile.write("\r\n");
        bwFile.write("echo Cut Src Start time %time%");
        bwFile.write("\r\n");

                bwFile.write("cp " + " \"" + strSourceFilePath + "\"  \""
                        + strOutput + "copy_A\"");
                bwFile.write("\r\n");

My guess is that, while creating the shell script using java, something needs to taken care of


Solution

  • bwFile.write("\r\n");
    

    replace these lines with UNIX line endings

    bwFile.write("\n");
    

    or set the proper line separator

    System.setProperty("line.separator", "\n");
    bwFile.newLine()