new PrintWriter(new OutputStreamWriter(new FileOutputStream(infoFileName), "GBK"), true);println部分行数据丢失
时间: 2024-05-25 18:18:10 浏览: 83
可能是因为GBK编码不支持某些字符,导致这些字符被丢失。建议使用UTF-8编码来解决该问题。修改代码为:
new PrintWriter(new OutputStreamWriter(new FileOutputStream(infoFileName), "UTF-8"), true);
这样可以确保所有字符都能正确地被写入文件中。
相关问题
public void printOperation() throws IOException { //定义一个字节输出流对象 FileOutputStream fos = new FileOutputStream("123.txt"); //定义三角形位置 System.out.println("请设置三角形三点位置:"); Scanner sc = new Scanner(System.in); System.out.println("1顶点Xn值:"); this.xn1 = sc.nextInt(); System.out.println("1顶点Yn值:"); this.yn1 = sc.nextInt(); System.out.println("2顶点Xn值:"); this.xn2 = sc.nextInt(); System.out.println("2顶点Yn值:"); this.yn2 = sc.nextInt(); System.out.println("3顶点Xn值:"); this.xn3 = sc.nextInt(); System.out.println("3顶点Yn值:"); this.yn3 = sc.nextInt();
//定义一个PrintWriter对象,用于输出到文件
PrintWriter pw = new PrintWriter(new OutputStreamWriter(fos)); //将三角形位置及周长面积输出到文件
pw.println("三角形三点位置:");
pw.println("1顶点坐标:(" + this.xn1 + "," + this.yn1 + ")");
pw.println("2顶点坐标:(" + this.xn2 + "," + this.yn2 + ")");
pw.println("3顶点坐标:(" + this.xn3 + "," + this.yn3 + ")");
pw.println("三角形周长:" + this.getPerimeter());
pw.println("三角形面积:" + this.getArea()); //关闭pw和fos流
pw.close();
fos.close();
}
//这段代码是用于设置三角形的位置并将其周长和面积输出到文件中的。首先定义了一个FileOutputStream对象fos用于写入文件,然后使用Scanner对象让用户输入三角形的三个顶点坐标,之后使用PrintWriter对象pw将这些值输出到文件中。最后要记得关闭pw和fos流。
PrintWriter 设置编码格式
在Java中,`PrintWriter` 类用于向字符流(通常是`OutputStream` 或 `Writer` 的子类)写入文本。如果你想使用`PrintWriter` 并设置编码格式,你需要先创建一个`OutputStreamWriter`,它会把字节数据转换成指定编码的字符流,然后再传递给`PrintWriter`。下面是一个例子,演示如何使用`PrintWriter` 和 UTF-8 编码:
```java
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
public class PrintWriterExample {
public static void main(String[] args) {
try {
// 创建一个UTF-8的OutputStreamWriter
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(
new FileOutputStream("output.txt"), StandardCharsets.UTF_8);
// 将OutputStreamWriter传递给PrintWriter
PrintStream printStream = new PrintStream(outputStreamWriter);
// 打印UTF-8编码的文字
printStream.println("你好,这是UTF-8编码的字符串");
// 关闭printStream和outputStreamWriter
printStream.close();
outputStreamWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在这段代码中,`OutputStreamWriter` 将 `FileOutputStream` 转换成了一个能处理UTF-8字符的流,之后的`PrintStream` 写入的就是UTF-8编码的数据。
阅读全文