2个换行符或0个FileOutputStream

时间:2017-11-06 20:30:33

标签: java

我的爷爷得到了一个新的像素2. Google智能助理存在一些小问题,即使它们的格式有效,也无法在联系人CSV中以某种方式格式化数字。 IPhone使用(xxx)xxx-xxxx格式,而Google只使用xxxxxxxxxx。无论如何,我以为我会雄心勃勃,并且因为我正在学习java而快速修改脚本。 CSV文件使用Cp1252字符集,换行符为0D,0A。我尝试过以几种不同的方式添加它们。我的问题是我的FOS要么在附加文件时不添加新行,要么我手动添加新行,然后在我手动添加的行之上添加另一个新行。我的代码中的一些奇怪的东西,比如转换为十六进制,是因为我疯狂地尝试了一切,只能添加一行。我检查了十六进制而没有添加换行符,结果是没有换行符00 00 00,当我添加换行符时,每行以十六进制00 0D 00 0A 00 0D 00 0A 2换行结束,我真的不知道为什么  下面的文件编写类代码:

package reformat;

import java.io.FileOutputStream;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Arrays;
import javax.xml.bind.DatatypeConverter;

public class WriteFile {

private final File file;

WriteFile(String fName){
    System.setProperty("line.separator", "\u0000");
    file = new File(fName);
    try {
        file.createNewFile();
    }
    catch(IOException e){
        e.printStackTrace();
    }
}

public void writeF(String line){
    //fix new line pattern for csv
    byte[] lineStream = line.getBytes(Charset.forName("Cp1252"));
    lineStream = Arrays.copyOf(lineStream, lineStream.length +1);
    line = new String(DatatypeConverter.printHexBinary(lineStream));
    line = new String(line.substring(0, line.length()-4));
    line = new String(line + "000D000A");
    //System.out.println(line);
    lineStream = DatatypeConverter.parseHexBinary(line);
    try {
        FileOutputStream fos = new FileOutputStream(file, true);
        fos.write(lineStream);
        fos.close();
        //System.exit(0);
    }
    catch(IOException e){
        e.printStackTrace();
    }
}
}

0 个答案:

没有答案