java 中的流

来源:互联网 发布:比较好的vpn 知乎 编辑:程序博客网 时间:2024/05/29 07:13

java中的流

 

java中有很多种流,可以分为节点流,处理流,也可以分为字节流,字符流

基本的节点流如下:InputStream,OutputStream,FileInputStream,FileOutputStream,Reader,Writer,FileReader,FilerWriter

处理流如下:BufferedInputStream,BufferedOutputStream,OutputStreamReader,OutputStreamWriter,DataOutputStream,DataInputStream,ObjectInputStream,ObjectOutputStream

ByteArrayInputStream,ByteArrayOutputStream等

以上只是列举了一些比较常用的,如果要详细了解,可以查看jdk的API文档

下面是关于上面流写的一些例子,用作参考

public class FileInputStreamTest {

 /**
  * @param args
  */
 public static void main(String[] args)throws Exception {
  // TODO Auto-generated method stub
//  fileInputStream();
//  fileWrite();
//  bufferWriter();
//  ouputStreamWriter();
//  dataInputStream();
  objectOutputStream();

 }


 private static void objectOutputStream() throws IOException,
   FileNotFoundException {
  ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c:/data.dat"));
  SerializableClazz clazz = new SerializableClazz(10,"test",1.023);
  oos.writeObject(clazz);
  oos.flush();
  oos.close();
 }


 private static void dataInputStream() throws FileNotFoundException,
   IOException, UnsupportedEncodingException {
  DataOutputStream dos = new DataOutputStream(new FileOutputStream("c:/test.txt"));
  dos.writeFloat(new Float(0.123456));
  dos.writeBoolean(true);
  dos.writeChars("这是一个测试");
  dos.flush();
  dos.close();
  
  DataInputStream dis = new DataInputStream(new FileInputStream("c:/test.txt"));
  System.out.println(dis.readFloat());
  System.out.println(dis.readBoolean());
  dis.close();
 }


 private static void ouputStreamWriter() throws FileNotFoundException,
   IOException {
  OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("c:/test.txt",true),"gbk");
  System.out.println(osw.getEncoding());
  osw.write("这是一个测试用例,用来测试 outputstreamwriter" +
    "アリババは、仕入れたい商材の调达、问屋を探せる卸サイトです");
  osw.flush();
  osw.close();
 }

 private static void bufferWriter() throws IOException {
  //字符流,处理流
  BufferedWriter bw = new BufferedWriter(new FileWriter("c:/test.txt"));
  for(int i =0 ; i<100; i++)
  {
//   bw.write(String.valueOf(Math.random()));
   bw.write(String.valueOf(new Random().nextInt(10)));
   bw.newLine();
  }
  bw.close();
 }

 private static void fileWrite() throws IOException {
  //字符流,节点流
  FileWriter fw = new FileWriter("c:/test.txt");
  for(int i= 0 ; i< 5000; i++)
  {
   fw.write("baike.baidu.com/view/1882862.htm");
  }
  fw.flush();
  fw.close();
 }

 private static void fileInputStream() throws FileNotFoundException,
   IOException, UnsupportedEncodingException {
  //字节流,节点流
  FileInputStream fi = new FileInputStream("c:/a.txt");
  StringBuilder str = new StringBuilder();
  byte[] buffer = new byte[1024];
  int b = 0;
  while((b = fi.read(buffer)) != -1)
  {
   str.append(new String(buffer , "gb2312"));
  }
  fi.close();
  System.out.println(str.toString());
 }
}

 

/*

此处定义了一个类,并继承了serializable接口,主要的作用是使对象可序列化,

使用objectouputstream保存到本地或进行网络传输

*/

class SerializableClazz implements Serializable{
 private int i;
 private String str;
 transient private double d;// 序列化时不予考虑
 public SerializableClazz(){}
 public SerializableClazz(int i,String str , double d){
  this.i = i;
  this.str = str;
  this.d = d;
 }
 public SerializableClazz getInstance(){
  return new SerializableClazz();
 }
}

原创粉丝点击