今天在练习io流的时候出现了一些问题
read读出来的数字一直比文本字符大,多的会输出空格
并且不管输入什么中文字符串首字符都是乱码
两个问题, 其实楼上已经给出代码了, 这里我解释下
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt"),"gbk");
String s ="春风扶栏露华浓";
//1.1 字符串转成字符数组
char[] c = s.toCharArray();
//1.2 开始写入文件
osw.write(c);
//1.3 释放资源
osw.close();
//2. 读取文件
//2.1 获取输入流, 用转换流 编码
InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"), Charset.forName("gbk"));
//2.2 定义一个int类型的变量, 用来存 一次读取到数组中的长度
int len;
//2.3 定义一个char类型的数组, 用来存读取到的内容
char[] chars = new char[1024];
//2.4 读取内容到数组中, 每次读取的长度是 len
while ((len= isr.read(chars))!=-1){
//2.5 利用字符串的构造方法, 把char数组变成 字符串
String s1 = new String(chars,0,len);
System.out.println(s1);
}
//2.6 释放资源
isr.close();
```
设置字符集,应该就行了
public static void read() throws IOException{
InputStreamReader is=new InputStreamReader(new FileInputStream("gbk.txt"),"utf-8");
char[] buf=new char[8];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
is.close();
}
以上可以参考,如有帮助,请采纳!