Java文件操作总结

标题:Java文件操作总结(一)

内容:
由于一直在使用Java file功能,但是总是很混乱,今天将Java File的所有功能做一个总结。

Java文件操作我个人认为重要的问题有:

  a:如何跨平台问题
  b:文件编码问题,尤其是多语言平台情况下如何正常工作。
  c:文件读写效率、操作效率
  d:文件加密和文件安全
  e:文件快速检索,强烈建议使用lence进行文件检索及文件管理。

以下是本人做的一些整理:

一:建立文件

  File file1 = new File ("C:\\temp\\myNote.txt"); // in Windows 这是windows文件系统下的方法
  File file2 = new File ("/tmp/myNote.txt"); // in Linux/Unix    unix文件系统的方法

最安全的建立文件的方法:

  File myFile = new File("C:" + File.separator + "jdk1.5.0" + File.separator, "File.java");

  File.separator 是文件路径符号。
  System.out.println(myFile.getName());//取得文件名称的方法
  System.out.println(myFile.getPath());//取得文件路径的方法
  System.out.println(myFile.isAbsolute());//判断文件是否完整
  System.out.println(myFile.getParent());//取得文件的根目录
  System.out.println(myFile.exists());//判断文件是否存在
  System.out.println(myFile.isDirectory());//判断是否是目录
  System.out.println(myFile.isFile());//判断是否是文件
  System.out.println(myFile.isHidden());//判断是否是隐藏文件
  System.out.println(myFile.canRead());//判断是否可读
  System.out.println(myFile.canWrite());//判断是否可写

  File myFile_A = new File("C:" + File.separator);
    for(String s: myFile_A.list()){//读取某个目录下所有文件
    System.out.println(s);
    }

   File myFile_C=new File("d:/test.txt");
      System.out.println(new Date(myFile_C.lastModified()));//最后一次编辑时间
    myFile_C.renameTo(new File("c:/text.txt.bak"));//从命名
    myFile_C.setReadOnly();//设置为只读
二:文件过滤方法

  java提供了很好的文件过滤借口:FilenameFilter 过滤以后的文件可以用listFiles显示出来。效率还是非常高的。

import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;
/**
 * 文件过滤器过滤类
 * @author fb
 */
class FileListFilter implements FilenameFilter {
 private String name;
 private String extension;
 public FileListFilter(String name, String extension) {
  this.name = name;
  this.extension = extension;
 }
 public boolean accept(File directory, String filename) {
  boolean fileOK = true;
  if (name != null) {
   fileOK = filename.startsWith(name);
  }
  if (extension != null) {
   fileOK = filename.endsWith('.' + extension);
  }
  return fileOK;
 }
}
测试方法:

import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;
/**
 * 文件过滤器  运行函数
 * @author fb
 */
public class Run_FileListFilter {
 public static void main(String[] args) {
   File myDir = new File("d:/");
   FilenameFilter select = new FileListFilter("F", "txt");
   File[] contents = myDir.listFiles(select);
   for (File file : contents) {
    System.out.println(file + " is a " + (file.isDirectory() ? "directory" : "file")
      + " last modified on\n" + new Date(file.lastModified()));
   }
 }
}
三:建立目录、文件、临时文件、删除文件或目录
import java.io.File;
import java.io.IOException;

public class MakeDir {
 
 public static void main(String[] args) {
  File myFile=new File("D:/myFubin/");
  if(myFile.mkdir()){//单级目录
   System.out.println("建立目录成功");
  }else{
   System.out.println("建立目录失败");
  }
 
  File myFile_A=new File("D:/myFubin/test/");
  if(myFile_A.mkdirs()){//多级目录
   System.out.println("建立目录成功");
  }else{
   System.out.println("建立目录失败");
  }
 
  File file = new File("d:\\myFubin\\test.txt");
  try {
   file.createNewFile();//建立空文件
  } catch (IOException e) {
   e.printStackTrace();
  }
 
  System.out.println(file.canRead());
 
  if(file.delete()){//删除文件或删除目录
   //删除文件的另外一个方法:file.deleteOnExit() 这种方法是在程序退出的时候将文件删除
   System.out.println("删除成功");
  }else{
   System.out.println("删除失败");
  }
 
  try {
   File tmp = File.createTempFile("foo", "tmp");//建立临时文件
   System.out.println("刚才建立的临时文件在:" + tmp.getCanonicalPath());
  } catch (IOException e) {
   e.printStackTrace();
  }
 
 
 }
 
}

 

标题:Java文件操作总结(二)

import java.io.File;
/**
 * 文件操作里Java 1.6 新功能:查询磁盘空间
 */
public class SpaceChecker {

public static void main(String[] args) {
File[] roots = File.listRoots();//取得所有的根,如果是windows系统那么将取得所有的磁盘
  for (int i = 0; i < roots.length; i++) {
   System.out.println(roots[i]);
   System.out.println("Free space = " + roots[i].getFreeSpace());
   System.out.println("Usable space = " + roots[i].getUsableSpace());
   System.out.println("Total space = " + roots[i].getTotalSpace());
   System.out.println();
  }
}
}

 

标题:Java文件操作总结(三)

内容:
使用Stream读文件


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class InPut {
 public static void main(String[] args) {
  File myFile=new File("d:/text.txt");
    try {
   FileInputStream aFileInputStream=new FileInputStream(myFile);
    //System.out.print(aFileInputStream.read());//  
    byte[] buffer = new byte[1024];//设置一次读取的数量
    while (true) {
     int bytesRead = aFileInputStream.read(buffer);
     System.out.println(bytesRead);
     if (bytesRead == -1)//当其为表示已经读完,那么停止循环表示一次读入完成
      break;
     System.out.println(bytesRead);
     System.out.write(buffer, 0, bytesRead);
    }
    } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}


使用Stream写文件

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class OutPut_A {

public static void main(String[] args) {
File myFile=new File("d:/Test2.txt");
try {
FileOutputStream aVar=new FileOutputStream(myFile);
byte[] aDate={65,66,67,68,69,70,71};//向文件写入:ABCDEFG
aVar.write(aDate);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


将文件的内容写入另外一个文件

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class OutPut {

 public static void main(String[] args) {
  File myFile=new File("d:/text.txt");
  File myFile_A=new File("d:/test1.txt");
    try {
   FileInputStream aFileInputStream=new FileInputStream(myFile);
   FileOutputStream aFileOutputStream=new FileOutputStream(myFile_A);
    byte[] my_Date=new byte[1024];
    int i=aFileInputStream.read(my_Date);
    while(i!=-1){
     aFileOutputStream.write(my_Date,0,i);
     i=aFileInputStream.read(my_Date);
    }
    aFileInputStream.close();
    aFileOutputStream.close();
    } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值