JAVA IO操作

来源:互联网 发布:批量发送邮件软件 编辑:程序博客网 时间:2024/05/17 01:31
1.在某个文件夹下列出所有文件
File fl=new File("F:\\迅雷下载");
System.out.println(fl.isDirectory());
File[] file=fl.listFiles(new filter());
  for (File file2:file) {
   System.out.println(file2.getName()+" 大小:"+file2.length()/1024.0/1000.00+"M");
  }
public boolean accept(File arg0) {
  if (arg0.isDirectory()) {
   return true;
  }
  return false;
 }
2.文件输入流
读取文件的方式(固定写法)
FileInputStream fis=null;
  try {
   //创建一个文件输入流
   fis=new FileInputStream("F:\\配置.txt");
   //创建一个字节数组用来存储读取的信息
   byte[] buf=new byte[1024];
   //使用len读取长度,len>=0说明读取到了元素,可以直接对元素进行操作
   int len=0;
   while((len=fis.read(buf))>=0){
    System.out.write(buf,0,len);
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  }finally{
   if (fis!=null) {
    try {
     fis.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
3.文件通过流的方式拷贝
  FileInputStream fis=null;
  FileOutputStream fos=null;
  try {
   fis=new FileInputStream("E:\\SN.txt");
   fos=new FileOutputStream("D:/SN1.txt");
   int len=0;
   byte[] buf=new byte[1024];
   while((len=fis.read(buf))>=0){
    fos.write(buf, 0, len);
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   fis.close();
   fos.close();
  }
4.过滤流,缓冲和装饰的作用,使字节流变更强大
FileInputStream fileInputStream=null;
  BufferedInputStream bufferedInputStream=null;
  BufferedOutputStream bufferedOutputStream=null;
  try {
   fileInputStream=new FileInputStream("E:\\SN.txt");
    bufferedInputStream=new BufferedInputStream(fileInputStream);
    bufferedOutputStream=new BufferedOutputStream(new FileOutputStream("D:/1.txt"));
    int len=0;
    byte[] bs=new byte[1024];
    while((len=bufferedInputStream.read(bs))>=0){
     bufferedOutputStream.write(bs,0,len);
    }
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }finally{
   if (bufferedOutputStream!=null) {
    try {
     bufferedOutputStream.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
   if (bufferedInputStream!=null) {
    try {
     bufferedInputStream.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
  5.数据流,若果想存储基本类型就用DataOutputStream,读取用DataInputStream 
FileOutputStream fos=null;
  FileInputStream fis=null;
  DataOutputStream dataOutputStream=null;
  DataInputStream dataInputStream=null;
  try {
   fos=new FileOutputStream("D:\\1.txt");
   dataOutputStream=new DataOutputStream(fos);
   dataOutputStream.writeInt(111);//写一个整数
   dataOutputStream.writeInt(112);//写一个整数
   dataOutputStream.writeInt(113311212);//写一个整数
   dataInputStream=new DataInputStream(new FileInputStream("D:\\1.txt"));
   System.out.println(dataInputStream.readInt());
   System.out.println(dataInputStream.readInt());
   System.out.println(dataInputStream.readInt());
   
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
6.字节流一般是XXXstream,字符流一般是XXXReader,XXXWriter
此处用于读取字符文件(log日志)到系统可以根据规则判断写入文件
BufferedReader br=null;
  PrintWriter pw=null;
  try {
   br=new BufferedReader(new FileReader("D:\\v6logs\\qmslog\\bsp.log"));
   pw=new PrintWriter(new BufferedWriter(new FileWriter("D:\\1.txt")));
   String str=null;
   while((str=br.readLine())!=null){
    if (str.startsWith("[2014-03-14")) {
     System.out.println(str);
     pw.println(str);
    }
   }
   pw.flush();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
7.使用转换流来处理标准输入
InputStream in=System.in;
  /*while(true){
   byte[] by=new byte[1024];
   int len=0;
   while((len=in.read(by))>0){
    System.out.write(by,0,len);
   }
  }*/
  BufferedReader br=null;
  br=new BufferedReader(new InputStreamReader(in));
  String str=null;
  while((str=br.readLine())!=null){
   if ("exit".equals(str)) {
    break;
   }else {
    System.out.println("您输入了:"+str);
   }
  }
8.






  

0 0
原创粉丝点击