文件的简单操作

        最近两个周,我总算是把IO的一些东西学习了,可能先后经过两个老师,学的有些乱,好多东西不知道自己学了没有,现在先把文件的简单操作贴上,包括文件的创建,删除,查找,计数,读写,复制以及一些简单加密。

        文件的创建和删除,我们可以通过一个简单的判断联系起来,核心代码如下:

         private void createFile(String string) throws IOException {//抛出异常
         //实例化一个File对象
          File f = new File(string);
         //判断文件是否存在
          if(!f.exists()){
          f.createNewFile();

          }else{
           f.delete();
           }
          }

         另外利用这个方法还可以对目录进行创建删除操作;

          文件查找的同时把查找结果列出来,进行计数,核心代码如下:

       public void find(File file ,String findName){
       //列出所有的子目录
       File[] sonFiles = file.listFiles();
        if(sonFiles != null){
        for(int i=0; i < sonFiles.length; i++){
         File f = sonFiles[i];
         if(f.isFile()){
         if(f.getName().indexOf(findName) != -1){
          System.out.println(f.getAbsolutePath());
          }
          } else {
            find(f, findName);

        }  } } }

      public int countFile(File file){
        int count = 0;
         //获取file下所有的目录和文件
         File [] list = file.listFiles();
        //判断
         if(null == list || list.length==0){
            return count;
        }
        for(File f : list){
        if(f.isFile()){
        count++;
        }
       if(f.isDirectory()){
        count+=countFile(f);
        }
        }
        return count ;
        }}

 

        文件的读写时文件中非常重要的两个操作,读写中主要注意的是一般情况下每次读写的是一个字节,所以多字节的读出来会出现乱码,这时需要用缓冲流来读写,核心代码如下;

 public void readFile(){
   try {
    java.io.FileInputStream fis = new FileInputStream("D:/test.txt");
    
    System.out.println("fis.available()="+fis.available());
    //新建一个与文件大小相同的字节数组
    byte[] bytes = new byte[fis.available()];
    //一次性把所有的数据都读到这个数组中
    fis.read(bytes);
    String content = new String(bytes, "GB2312");
    System.out.println(content);
     int c = fis.read();
    while(c != -1){
     System.out.print((char)c);
     c = fis.read();   
    }
     //每次记得关闭文件流
    fis.close();
   } catch (Exception e) {
    e.printStackTrace();
   } }
   public void writeFile(){
   try {
    java.io.FileOutputStream fos = new FileOutputStream("D:/test2.txt");
    String content = "你好!";
    byte[] bytes = content.getBytes("gb2312");
    fos.write(105);
    fos.close();
   } catch (Exception e) {
    e.printStackTrace();
   }}
      加密有很多方法,在上述读写方法中,我们可以进行简单的操作就可以进行加密,读取的时候注意一点就行了,在下面的复制中有体现:

 public void copyFile(String src, String dest){
   try {
    FileInputStream fis = new FileInputStream(src);
    FileOutputStream fos = new FileOutputStream(dest);
    int c = fis.read();
    while(c != -1){
     //加密
     // c = c+1;
      fos.write(c);
     c = fis.read();
    }
     fis.close();
    fos.close();
   } catch (Exception e) {
    e.printStackTrace();
   }
 }

文件还有很多方法,在API文档中都有描述,这里只是简单的操作,如果理解和代码有什么问题,请各位大神指出,说实话,我理解的也很浅.......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值