垃圾值更新为文本文件

时间:2018-04-24 09:49:03

标签: java io java-8

我正在尝试使用某个值更新文件。但是在保存时,很少有垃圾值也会使用原始内容进行更新。使用以下代码。

public class WriteToFile{

    public static void main(String[] args){
        Path path = Paths.get("C:\\someFile.txt");
        String fileContent = new String("someText");
        if (Files.exists(path)) {
            final File filePath = new File("C:\\someFile.txt");
            try {
                FileUtils.writeFile(filePath,fileContent);
            } catch (final Exception e1) {
            // TODO What if writing to the state file fails??
            }
        }
     }

    public class FileUploadUtils {

     public static void writeFile(final File filePath, final Object 
     byteFileContent) {
         try (FileOutputStream fileOutputStream = new FileOutputStream(filePath);
              ObjectOutputStream out = new ObjectOutputStream(fileOutputStream)) {
              out.writeObject(byteFileContent);
         } catch (final IOException io) {
             io.printStackTrace();
         }
     }
   }

我也可以将内容写入文件,但它也添加了一些垃圾字符。比如“¬íTomeText”

1 个答案:

答案 0 :(得分:0)

ObjectOutputStream似乎在将数据写入文件时添加了一些值。 为什么不直接使用您创建的FileOutputStream并将数据作为字节传递?

public static void main(String[] args) {

    Path path = Paths.get("C:\\someFile.txt");
    String fileContent = new String("someText");
    if (Files.exists(path)) {
        final File filePath = new File("C:\\someFile.txt");
        try {

            FileUploadUtils.writeFile(
                    filePath, fileContent.getBytes());
        } catch (final Exception e1) {
            // TODO What if writing to the state file fails??
        }
    }

}

public class FileUploadUtils {

public static void writeFile(final File filePath, final byte[] byteFileContent) {
    try (FileOutputStream fileOutputStream = new FileOutputStream(filePath)) {
        fileOutputStream.write(byteFileContent);
    } catch (final IOException io) {
        io.printStackTrace();
    }
}
}