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
。