import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringBufferInputStream;
import java.io.StringReader;
@SuppressWarnings("deprecation")
public class FileStreamTest {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//FileOutputStream/FileInputStream
File f=new File("test.txt");
FileOutputStream fos=new FileOutputStream(f);
String str="FileStream 测试!";
fos.write(str.getBytes());
fos.close();
FileInputStream fis=new FileInputStream(f);
byte[] buf=new byte[1024];
int len=fis.read(buf);
System.out.println(new String(buf,0,len));
fis.close();
FileWriter fw=new FileWriter(f);
fw.write("FileWriter and FileReader 测试!");
fw.close();
FileReader fr=new FileReader(f);
char[] frcbuf=new char[1024];
int frlen=fr.read(frcbuf);
System.out.println(new String(frcbuf,0,frlen));
fr.close();
//ByteArrayOutputStream/ByteArrayInputStream
ByteArrayOutputStream baos=new ByteArrayOutputStream();
baos.write("ByteArrayOutputStream and ByteArrayInputStream 测试!".getBytes());
baos.close(); //关闭无效。
ByteArrayInputStream bais=new ByteArrayInputStream(baos.toByteArray());
byte[] buf3=new byte[1024];
int len2=bais.read(buf3);
System.out.println(new String(buf3,0,len2));
//总结:ByteArrayOutputStream实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString()获取数据
//可以这样理解:ByteArrayOutputStream是用来缓存数据的(数据写入的目标(output stream原义),向它的内部缓冲区写入数据,缓冲区自动增长,当写入完成时可以从中提取数据。由于这个原因,ByteArrayOutputStream常用于存储数据以用于一次写入
//详细理解:http://blog.csdn.net/rcoder/archive/2011/01/05/6118313.aspx
CharArrayWriter caw=new CharArrayWriter();
caw.write("CharArrayWriter 测试!");
CharArrayReader car=new CharArrayReader(caw.toCharArray());
char[] carcbuf=new char[1024];
int carlen=car.read(carcbuf);
System.out.println(new String(carcbuf,0,carlen));
//总结:与ByteArrayInputStream/ByteArrayOutputStream的区别就是字节导向与字符导向
///
//StringBufferInputStream
@SuppressWarnings("deprecation")
StringBufferInputStream sbis=new StringBufferInputStream("StringBufferInputStream 测试!");
byte[] buf4=new byte[1024];
int len3=sbis.read(buf4);
sbis.close();
System.out.println(new String(buf4,0,len3));
System.out.println(len3);
//StringBufferInputStream已过时,用StringReader替代。
StringReader sr=new StringReader("StringReader 测试!");
char[] cbuf=new char[1024];
int len4=sr.read(cbuf);
System.out.println(new String(cbuf,0,len4));
//字节导向的stream转换成字符导向的stream
File f2=new File("test1.txt");
FileOutputStream fos2=new FileOutputStream(f2);
OutputStreamWriter osw=new OutputStreamWriter(fos2);
osw.write("97java OutputStreamWriter测试");
osw.close();
FileInputStream fis2=new FileInputStream(f2);
InputStreamReader isr=new InputStreamReader(fis2);
char[] isrbuf=new char[1024];
int isrlen=isr.read(isrbuf);
System.out.println(new String(isrbuf,0,isrlen));
/
FileOutputStream fos3=new FileOutputStream("test2.txt");
DataOutputStream dos=new DataOutputStream(fos3);
dos.writeUTF("哈哈222222222222xxxxxxxxxxxxxxx");
dos.close();
FileInputStream fis3=new FileInputStream("test2.txt");
DataInputStream dis=new DataInputStream(fis3);
String str2=dis.readUTF();
System.out.println(str2);
FileOutputStream fos4=new FileOutputStream("test3.txt");
DataOutputStream dos2=new DataOutputStream(fos4);
dos2.writeInt(12);
dos2.writeFloat((float) 2.5);
dos2.writeChars("测试");
dos2.close();
FileInputStream fis4=new FileInputStream("test3.txt");
DataInputStream dis2=new DataInputStream(fis4);
int disInt=dis2.readInt();
float disFloat=dis2.readFloat();
char chardis=dis2.readChar();
char chardis2=dis2.readChar();
System.out.println(disInt+" "+disFloat+" "+chardis+""+chardis2);
//总结:DataOutputStream与DataInputstream包装OutputStream与InputStream。在读写操作上更加丰富,应用更简便。能直接Write和read各种基本数据类型和字符串
FileOutputStream fos5=new FileOutputStream("test4.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos5);
bos.write("你好/n你好".getBytes());
bos.close();
FileInputStream fis5=new FileInputStream("test4.txt");
BufferedInputStream bis=new BufferedInputStream(fis5);
int bislen=bis.read();
System.out.println("bislen="+bislen);
/* FileWriter fw2=new FileWriter("test4.txt");
fw2.write("大家好/n第二行/n第三行");
fw2.close();*/
FileReader fr2=new FileReader("test4.txt");
BufferedReader br=new BufferedReader(fr2);
/* String strbr="";
String strtemp="";
while((strtemp=br.readLine())!=null){
strbr+=(strtemp+"/n");
}
System.out.println(strbr);*/
char[] fr2cbuf=new char[1024];
int fr2len=fr2.read(fr2cbuf);
System.out.println(new String(fr2cbuf,0,fr2len));
}
}
Java的IO操作实例代码
最新推荐文章于 2024-01-09 12:06:09 发布