A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜佳瑞 中级黑马   /  2012-8-10 22:26  /  1234 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁有所有io流功能的整理,今天刚学完io流,但是觉得很多很混乱,在脑子里形成不了一个整体的框架,想把这些类整理一下,又觉得无从下手,有没有高手已经整理好的,让小弟参阅参阅。

1 个回复

倒序浏览
1. 文件复制,使用io中的输入流和输出流进行文件的读取和写入,实现文件的复制

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Scanner;


public class test1 {
public static void main(String arg[]){
  try{
   Scanner input=new Scanner(System.in);
   System.out.println("输入要复制的文件路径");
   //创建文件对象
   File inputFile =new File(input.next());
   //判断文件路径是否存在,如果不存在,退出程序
   if(!inputFile.exists()){
    System.out.println("源文件不存在,程序停止");
    System.exit(1);
   }
   System.out.println("输入复制文件的文件路径");
   File outputFile = new File(input.next());

   //判断文件路径是否存在,如果不存在,退出程序
   if(!outputFile.exists()){
    System.out.println("目标文件不存在,程序停止");
    System.exit(1);
   }
   //创建输入流对象
   InputStream in = new FileInputStream(inputFile);
   //创建输入流对象
   OutputStream out=new FileOutputStream(outputFile);
   //创建一个byte数组
   byte date[] = new byte[1024];
   int temp=0;
   //判断如果读取字节没有打到末尾,则继续读取,知道打到末尾退出(in.read()==-1时)。
   while((temp =in.read(date))!=-1){
    //写入输出流文件
    out.write(date);
   }
   //关闭输入流
   in.close();
   //关闭输出流
   out.close();
  }catch (Exception e) {
   // TODO: handle exception
   e.printStackTrace();
  }
}
}

运行代码,成功实现文件复制

2.统计某一目录下文件中出现的字母个数,数字个数,空格个数以及行数

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;


public class test2 {
public static void main(String arg[]){
  Scanner input=new Scanner(System.in);
  System.out.println("输入要查询的文件路径");
  String fileName=input.next();
  String line;
  int i=0,j=0,f=0,k=0;
  try{
   //设置缓冲流
   BufferedReader in =new BufferedReader(new FileReader(fileName));
   //读取一个文本行
   line=in.readLine();
   //判断如果文本行中是否有数据
   while(line!=null){
    //将数据转换为数组,toCharArray()方法
    char c[]=line.toCharArray();
    for(int i1=0;i1<c.length;i1++){
     //如果是字母
     if(Character.isLetter(c[i1])){
      i++;
     }
     //如果是数字
     else if(Character.isDigit(c[i1])){
      j++;
     }
     //是空格
     else if(Character.isWhitespace(c[i1])){
      f++;
     }
     //继续读取下一行数据
     line =in.readLine();
     k++;
    }
    in.close();
    System.out.println("字母:"+i+",数字"+j+",空格"+f+",行数"+k);
   }
  }catch (Exception e) {
   // TODO: handle exception
  }
}
}
3.   3种方法读取文件

      1:

try{

  //创建缓冲流

  BufferedReader br= new BufferedReader(new FileReader(new File("读取文件的路径")));

  StringBuffer bd=new StringBuffer();

  while(true){

     String str=br.readLine();

     if(str==null){

          break;

      }

      System.out.println(str);

      bd.append(str);//append拼接

  }

      br.close();

}catch(Exception e){

}

      2:

     InputStream is =new FileInputStream(new File("文件路径"));

     byte b[] = new byte[Integer.parseInt(new File("d:\\1.xls").length()+"")];

    is.read(b);

    System.out.write(b);

    System.out.println();

    is.close();

    3:

     Reader r = new FileReader(new File("文件路径"));

     char c[] = new char[(int) new File("d:\\1.xls").length()];

     r.read(c);

     String str=new Sting(c);

     r.close();

4.   3中方法写入文件

     1.

     PrintWriter pw = new PrintWriter(new FileWriter("d:\\1.txt"));

     pw.write("aaaaa");

     2.

     BufferedWriter bw = new BufferedWriter(new FileWriter(new File("文件路径")));

     bw.write("aaaddddd");

     3.

     OutputStream os = new FileOutputStream(new File("文件路径"));

      os.write();

点评

太给力了,非常感谢,偶像!!!  发表于 2012-8-10 22:40
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马