Java:Printwriter工作得几乎完美,但插入了一些奇怪的字符。。。为什么会这样?
我只是在编写一个家庭作业程序,在这个程序中,我使用Java:Printwriter工作得几乎完美,但插入了一些奇怪的字符。。。为什么会这样?,java,Java,我只是在编写一个家庭作业程序,在这个程序中,我使用FileOutputStream将一些字符串写入文件。虽然它大部分工作正常,但出于某种原因,程序一直在文件开头插入一些奇怪的字符,而文件的其余部分看起来应该是这样的。我希望有人能帮我弄清楚这里发生了什么 这是我在主类中的代码: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j
FileOutputStream
将一些字符串写入文件。虽然它大部分工作正常,但出于某种原因,程序一直在文件开头插入一些奇怪的字符,而文件的其余部分看起来应该是这样的。我希望有人能帮我弄清楚这里发生了什么
这是我在主类中的代码:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author ChetSpalsky
*/
public class Writer {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
CarPlate carPlate1 = new CarPlate();
carPlate1.setNumber("1098463");
carPlate1.setState("CA");
carPlate1.setColor("Blue");
CarPlate carPlate2 = new CarPlate();
carPlate2.setNumber("6371849");
carPlate2.setState("MA");
carPlate2.setColor("Red");
CarPlate carPlate3 = new CarPlate();
carPlate3.setNumber("5738402");
carPlate3.setState("AZ");
carPlate3.setColor("Green");
String writeCarPlate1 = (carPlate1.getNumber() + " " + carPlate1.getState() + " " + carPlate1.getColor());
String writeCarPlate2 = (carPlate2.getNumber() + " " + carPlate2.getState() + " " + carPlate2.getColor());
String writeCarPlate3 = (carPlate3.getNumber() + " " + carPlate3.getState() + " " + carPlate3.getColor());
try {
ObjectOutputStream text = new ObjectOutputStream(new FileOutputStream("dataOutput.txt", false));
PrintWriter pw = new PrintWriter(text);
pw.println(writeCarPlate1);
pw.println(writeCarPlate2);
pw.println(writeCarPlate3);
pw.flush();
} catch (FileNotFoundException ex) {
Logger.getLogger(Writer.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Writer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
请注意,我知道,InputStream
imports现在没有使用,我计划稍后在程序中使用它们,我已经尝试注释它们并再次运行程序,尽管这没有任何区别
为了以防万一,下面是定义CarPlate
对象的CarPlate
类中的代码:
public class CarPlate {
private String number;
private String state;
private String color;
public CarPlate() {
}
public CarPlate(String number, String state, String color) {
this.number = number;
this.state = state;
this.color = color;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
最后,这里是文本文件的输出:
Ì�w01098463钙蓝
6371849毫安红色
5738402 AZ绿
我只希望文本文件是:
01098463钙蓝
6371849毫安红色
5738402 AZ绿
我真的很感谢你们的帮助,谢谢你们 您使用的是ObjectOutputStream,它将某些信息预先添加到文件中: 只需使用PrintWriter或FileOutputStream写入文件,除非您试图写入对象
PrintWriter pw = new PrintWriter(new File("dataoutput.txt"));
不要使用FileOutputStream来写入文件,而应该尝试使用
BufferedWriter writer = new BufferedWriter( new FileWriter( yourfilename));
writer.write( yourstring);
@user2494817。如果要保存对象的状态,必须使用ObjectOutputStream将对象序列化为所需的文件。如果您想输入简单可读的文本,可以只使用FiletOutputStream。如果您有不可读的文本,带有带有特殊字符的奇怪字符集,我认为使用bufferedWriter是这一阶段最好的方法。