java中的OutputStreamWriter用法
write(byte[]b)方法:将b.length个字节从指定字节数组写入此文件输出流中。
write(byte[]b,intoff,intlen)方法:将指定字节数组中从偏移量off开始的len个字节写入此文件输出流。使用方法write(byte[]b),即向文件写入一个byte数组的内容;
创建一个字符串对象,并调用方法getBytes(),将其转换成一个字符数组作为write(byte[]b)的形参;当文件MyFile1.txt不存在时,该方法会自动创建一个这个文件;当文件已经存在时,该方法会创建一个新的同名文件进行覆盖并写入数组内容。
扩展资料
WRITE使用示例
fis=newFileInputStream(fileIN);//输入流连接到输入文件
fos=newFileOutputStream(fileOUT);//输出流连接到输出文件
byte[]arr=newbyte[10];//该数组用来存入从输入文件中读取到的数据
intlen;//变量len用来存储每次读取数据后的返回值
while((len=fis.read(arr))!=-1){
fos.write(arr,0,len);
}//while循环:每次从输入文件读取数据后,都写入到输出文件中
}catch(IOExceptione){
e.printStackTrace();
}
java中OutputStreamWriter和Writer的区别还有InputStreamReader与Reader的区别如下:
1.OutputStreamWriter负责进行InputStream到Reader的适配和由OutputStream到Writer的适配。 Reader、Writer是用来处理16位元的流。
Reader支持16位的Unicode字符输出,InputStream支持8位的字符输出。
Reader和InputStream分别是I/O库提供的两套平行独立的等级机构,
InputStream、OutputStream是用来处理8位元的流,
2.java.io.Reader 和 java.io.InputStream 组成了 Java输入类。Reader 用于读入16位字符,也就是 Unicode编码的字符;而 InputStream 用于读入 ASCII字符和二进制数据。在 Java中,有不同类型的 Reader 输入流对应于不同的数据源:
FileReader 用于从文件输入;
CharArrayReader 用于从程序中的字符数组输入;
StringReader 用于从程序中的字符串输入;
PipedReader 用于读取从另一个线程中的 PipedWriter 写入管道的数据。
相应的也有不同类型的 InputStream 输入流对应于不同的数据源:FileInputStream,ByteArrayInputStream,StringBufferInputStream,PipedInputStream。另外,还有两种没有对应 Reader 类型的 InputStream 输入流
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
就是将BUfferedWriter输出所要求的字符流,由OutputStreamWriter将字符和字节作为一个转换,你自己想反了。具体请看Java的API文档上的说明。
InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码;
例如:
public static void transReadNoBuf() throws IOException {
/**
* 没有缓冲区,只能使用read()方法。
*/
//读取字节流
// InputStream in = System.in;//读取键盘的输入。
InputStream in = new FileInputStream("D:\\demo.txt");//读取文件的数据。
//将字节流向字符流的转换。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节.
InputStreamReader isr = new InputStreamReader(in);//读取
// InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\demo.txt"));//综合到一句。
char []cha = new char[1024];
int len = isr.read(cha);
System.out.println(new String(cha,0,len));
isr.close();
}
public static void transReadByBuf() throws IOException {
/**
* 使用缓冲区 可以使用缓冲区对象的 read() 和 readLine()方法。
*/
//读取字节流
// InputStream in = System.in;//读取键盘上的数据
InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。
//将字节流向字符流的转换。
InputStreamReader isr = new InputStreamReader(in);//读取
//创建字符流缓冲区
BufferedReader bufr = new BufferedReader(isr);//缓冲
// BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\demo.txt")));可以综合到一句。
/* int ch =0;
ch = bufr.read();
System.out.println((char)ch);*/
String line = null;
while((line = bufr.readLine())!=null){
System.out.println(line);
}
isr.close();
}