Java 垃圾值正在更新为文本文件

Java 垃圾值正在更新为文本文件,java,io,java-8,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))

我正在尝试用一些值更新文件。但几乎没有垃圾值在保存时也会随原始内容更新。使用下面的代码

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();
         }
     }
   }

我也可以将内容写入文件,但它也添加了一些垃圾字符。像“itsometext”

一样,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();
    }
}
}

可能的重复您是否检查了文件和要写入的字符串的编码,以及垃圾字符是否为BOM?您不应该使用
ObjectOutputStream
,除非您希望它使用特定的Java序列化格式。相反,您需要使用
OutputStreamWriter
。如果OP想要写入字符串,最好使用带有适当字符集的
OutputStreamWriter