294 字符流写数据的5种方式
方法 | 描述 | |
1 | void write(int c) | 写入一个字符 |
2 | void write(char[] cbuf) | 写入一个字符数组 |
3 | void write(char[] cbuf,int off,int len) | 写入字符数组的局部 |
4 | void write(String str) | 写入一个字符串 |
5 | void write(String str,int off,int len) | 写入字符串的局部 |
写数据之后,要么close要么flush,文件里面才会实际写入内容。没有close或flush,写入内容还留在缓冲区,不写入文件。这是字符流的缓冲特性。
close包括flush动作,写了close之后就不能再继续写数据了。
char数组的元素用单引号包起来,例如char[] cbuf = {'a','b','c','d'};
方法 | 描述 | |
1 | flush() | 刷新,使字符缓冲流的数据实际写入文件 |
2 | close() | 关闭,释放资源,关闭后不可再读or写数据 |
【写数据方式1-一个字节】
byte[] 数组名=new byte[];
int 变量名;
fos.write(数组名,0,变量名)
【写数据方式2-字节数组】
byte[] 数组名=new byte[];
int 变量名;
while((变量名 = fis.read(数组名)) != -1)
//相当于
//变量名 = fis.read(数组名)
//while(变量名 != -1)
--------------------------------------------------------------
package e294;
import java.io.*;
public class OutputStreamWriterDemo1 {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw294 = new OutputStreamWriter(new FileOutputStream("myCharStream\\src\\e294\\text.txt"));
InputStreamReader isr294 = new InputStreamReader(new FileInputStream("myCharStream\\src\\e294\\text.txt"));
//1.写入一个字符
osw294.write(97);
// osw294.close();
osw294.flush();
osw294.write(98);
osw294.close();
//读数据,查看效果
int i;
while ((i = isr294.read()) != -1) {
System.out.println(i+",");
}
isr294.close();
}
}
//97,
--------------------------------------------------------------
package e294;
import java.io.*;
public class OutputStreamWriterDemo2 {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw294 = new OutputStreamWriter(new FileOutputStream("myCharStream\\src\\e294\\text.txt"));
InputStreamReader isr294 = new InputStreamReader(new FileInputStream("myCharStream\\src\\e294\\text.txt"));
//2.写入一个字符数组
char[] cbuf = {'a','b','c','d'};
osw294.write(cbuf);
osw294.close();
//读数据,查看效果
int i;
byte[] bb = new byte[1024];
while ((i = isr294.read()) != -1) {
System.out.print(i + ",");
}
isr294.close();
}
}
//97,98,99,
--------------------------------------------------------------
package e294;
import java.io.*;
public class OutputStreamWriterDemo3 {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw294 = new OutputStreamWriter(new FileOutputStream("myCharStream\\src\\e294\\text.txt"));
InputStreamReader isr294 = new InputStreamReader(new FileInputStream("myCharStream\\src\\e294\\text.txt"));
//3.写入字符数组的局部
char[] cbuf = {97, 98, 99};
osw294.write(cbuf, 0, 2);
osw294.close();
//读数据,查看效果
int i;
while ((i = isr294.read()) != -1) {
System.out.print(i + ",");
}
isr294.close();
}
}
//97,98,
--------------------------------------------------------------
package e294;
import java.io.*;
public class OutputStreamWriterDemo4 {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw294 = new OutputStreamWriter(new FileOutputStream("myCharStream\\src\\e294\\text.txt"));
InputStreamReader isr294 = new InputStreamReader(new FileInputStream("myCharStream\\src\\e294\\text.txt"));
//4.写入一个字符串
osw294.write("abc");
osw294.close();
//读数据,查看效果
int i;
while ((i = isr294.read()) != -1) {
System.out.print(i + ",");
}
isr294.close();
}
}
//
--------------------------------------------------------------
package e294;
import java.io.*;
public class OutputStreamWriterDemo5 {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw294 = new OutputStreamWriter(new FileOutputStream("myCharStream\\src\\e294\\text.txt"));
InputStreamReader isr294 = new InputStreamReader(new FileInputStream("myCharStream\\src\\e294\\text.txt"));
//5.写入字符串的局部
osw294.write("abcde", 0, 4);
osw294.flush();
osw294.close();
//读数据,查看效果
int i;
while ((i = isr294.read()) != -1) {
System.out.print((char) i + ",");//a,b,c,d,
}
isr294.close();
}
}