JAVA I/O操作

来源:互联网 发布:弹出广告拦截软件 编辑:程序博客网 时间:2024/04/23 21:56

JAVA I/O操作

 

1.File操作

   a.创建文件:

       File file = new File();//括号内可根相应的路径参数

       File.separator用作文件夹的间隔符,这样可以考虑到windows和linux通用性;

   b.InputStream流的形式访问文件:

       BufferedInputStream in=new BufferedInputStream(new FileInputStream("TokenTest.java"));//此时转换为InputStream流       

       PrintStream out=new PrintStream(new BufferedOutputStream(
                                                     new FileOutputStream("test.java")));

       进行文件流的输出:

        int i;
        while((i=br.read())!=-1)
            System.out.println(s);
            out.close();

   c.Reader/Writer读取字符的形式获取文件://通过InputStreamReader进行转换

       BufferedReader br=new BufferedReader(new InputStreamReader(new   FileInputStream(inputfile)));

       String data;

    while((data = br.readLine())!=null)
    {
     System.out.println(data);
    }

 

      //也可直接用FileReader的形式获取

      BufferedReader br = new BufferedReader(new FileReader("TokenTest.java"));

 

    d.文件的一些操作

        创建目录:file.mkdir();//创建目录

        剪切转移文件:file.renameto(new File(temppath+list[i]))//相当于剪切文件

        显示下属文件:String[] list = file.list();

                         System.out.println(list[i]);

                         //注意字符串的操作可以用于判断文件的类型如list[i].endWith(".java")

2.进行相应的String类型的字符流操作

       

         //小结:

         //String类型即直接用StringReader转换为字符流,也可转换为字节数祖转换为DataInputStream流

 

 

3.字节流与字符流的相关介绍

      最早的JAVA 的API提供的是字节流,以InputStream和OutputStream为主,进行派生,如ObjectInputStream,DataInputStream,BufferedInputStream,FileInputStream等等

      eg:DataInputStream in=new DataInputStream(new ByteArrayInputStream(string.getbytes()));

           int i=0;

           while((i=in.read)!=-1)

                System.out.println((char)i);

      随着国际化的出现,需要更多的对国际进行支持,于是出现了Reader和Writer类型的字符处理,如StringReader,FileReader,BufferedReader,FileWriter,BufferedWriter,PrintWriter等

      eg:BufferedReader in4 = new BufferedReader(new StringReader(s2));
           PrintWriter out1 = new PrintWriter(new BufferedWriter(
           new FileWriter("IODemo.text")));

 

         在字节流和字符流之间可以实现转换

           BufferedReader br=new BufferedReader(new InputStreamReader(new   FileInputStream(inputfile)));
   String data;
    while((data = br.readLine())!=null)
    {
     System.out.println(data);
    }

 

 

4.StringTokenizer与StreamTokenizer

   a. 二者都根据一定规则(主要为分隔符或词组)获取词组

   b.StringTokenizer 与split类似,其操作如下

      String data = "I-love-you"

      StringTokenizer st = new StringTokenizer(data,"-");

      String[] list=data.split("-");

   c.StreamTokenizer较为复杂,需要设置相应的词祖范围(或者默认),在判断输出时不能为TT_EOF,并可根据相应的词组形式进行输出

      

 

   5.File的renameTo 与delete方法

      delete()直接删除,需要花费一点时间,500M大概32ms

      renameTo()方法在跨文件系统的时候会有问题,可以用FileUtil的copyFile(srcFile,destFile)文件来解决这个问题

 

 

   6.Java对象转换为字节流

       1):ByteArrayOutputStream bytes = new ByteArrayOutputStream();

   ObjectOutputStream objout = new ObjectOutputStream(bytes);

   objout.writeObject(obj);

   byte[] data = bytes.toByteArray();


       2:)byte[] data = multiSegment.read();

   ObjectInputStream objin = new ObjectInputStream(new ByteArrayInputStream(data));

   return objin.readObject();

原创粉丝点击