file 操作
来源:互联网 发布:魔法医生黑金面膜 知乎 编辑:程序博客网 时间:2024/05/16 10:31
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();
- }
- }
- }
- import java.io.File;
- /**
- * @author fb www.cujava.com
- * 文件操作里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文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件夹的内容,移动文件,移动目录等
- /**
- * 读取文本文件内容
- * @param filePathAndName 带有完整绝对路径的文件名
- * @param encoding 文本文件打开的编码方式
- * @return 返回文本文件的内容
- */
- public String readTxt(String filePathAndName, String encoding)
- throws IOException {
- encoding = encoding.trim();
- StringBuffer str = new StringBuffer("");
- String st = "";
- try {
- FileInputStream fs = new FileInputStream(filePathAndName);
- InputStreamReader isr;
- if (encoding.equals("")) {
- isr = new InputStreamReader(fs);
- } else {
- isr = new InputStreamReader(fs, encoding);
- }
- BufferedReader br = new BufferedReader(isr);
- try {
- String data = "";
- while ((data = br.readLine()) != null) {
- str.append(data + " ");
- }
- } catch (Exception e) {
- str.append(e.toString());
- }
- st = str.toString();
- } catch (IOException es) {
- st = "";
- }
- return st;
- }
- /**
- * 新建目录
- * @param folderPath 目录
- * @return 返回目录创建后的路径
- */
- public String createFolder(String folderPath) {
- String txt = folderPath;
- try {
- java.io.File myFilePath = new java.io.File(txt);
- txt = folderPath;
- if (!myFilePath.exists()) {
- myFilePath.mkdir();
- }
- } catch (Exception e) {
- message = "创建目录操作出错";
- }
- return txt;
- }
- /**
- * 多级目录创建
- * @param folderPath 准备要在本级目录下创建新目录的目录路径 例如 c:myf
- * @param paths 无限级目录参数,各级目录以单数线区分 例如 a|b|c
- * @return 返回创建文件后的路径 例如 c:myfa c
- */
- public String createFolders(String folderPath, String paths) {
- String txts = folderPath;
- try {
- String txt;
- txts = folderPath;
- StringTokenizer st = new StringTokenizer(paths, "|");
- for (int i = 0; st.hasMoreTokens(); i++) {
- txt = st.nextToken().trim();
- if (txts.lastIndexOf("/") != -1) {
- txts = createFolder(txts + txt);
- } else {
- txts = createFolder(txts + txt + "/");
- }
- }
- } catch (Exception e) {
- message = "创建目录操作出错!";
- }
- return txts;
- }
- /**
- * 新建文件
- * @param filePathAndName 文本文件完整绝对路径及文件名
- * @param fileContent 文本文件内容
- * @return
- */
- public void createFile(String filePathAndName, String fileContent) {
- try {
- String filePath = filePathAndName;
- filePath = filePath.toString();
- File myFilePath = new File(filePath);
- if (!myFilePath.exists()) {
- myFilePath.createNewFile();
- }
- FileWriter resultFile = new FileWriter(myFilePath);
- PrintWriter myFile = new PrintWriter(resultFile);
- String strContent = fileContent;
- myFile.println(strContent);
- myFile.close();
- resultFile.close();
- } catch (Exception e) {
- message = "创建文件操作出错";
- }
- }
- /**
- * 有编码方式的文件创建
- * @param filePathAndName 文本文件完整绝对路径及文件名
- * @param fileContent 文本文件内容
- * @param encoding 编码方式 例如 GBK 或者 UTF-8
- * @return
- */
- public void createFile(String filePathAndName, String fileContent,
- String encoding) {
- try {
- String filePath = filePathAndName;
- filePath = filePath.toString();
- File myFilePath = new File(filePath);
- if (!myFilePath.exists()) {
- myFilePath.createNewFile();
- }
- PrintWriter myFile = new PrintWriter(myFilePath, encoding);
- String strContent = fileContent;
- myFile.println(strContent);
- myFile.close();
- } catch (Exception e) {
- message = "创建文件操作出错";
- }
- }
- /**
- * 删除文件
- * @param filePathAndName 文本文件完整绝对路径及文件名
- * @return Boolean 成功删除返回true遭遇异常返回false
- */
- public boolean delFile(String filePathAndName) {
- boolean bea = false;
- try {
- String filePath = filePathAndName;
- File myDelFile = new File(filePath);
- if (myDelFile.exists()) {
- myDelFile.delete();
- bea = true;
- } else {
- bea = false;
- message = (filePathAndName + " 删除文件操作出错");
- }
- } catch (Exception e) {
- message = e.toString();
- }
- return bea;
- }
- /**
- * 删除文件夹
- * @param folderPath 文件夹完整绝对路径
- * @return
- */
- public void delFolder(String folderPath) {
- try {
- delAllFile(folderPath); // 删除完里面所有内容
- String filePath = folderPath;
- filePath = filePath.toString();
- java.io.File myFilePath = new java.io.File(filePath);
- myFilePath.delete(); // 删除空文件夹
- } catch (Exception e) {
- message = ("删除文件夹操作出错");
- }
- }
- /**
- * 删除指定文件夹下所有文件
- * @param path 文件夹完整绝对路径
- * @return
- * @return
- */
- public boolean delAllFile(String path) {
- boolean bea = false;
- File file = new File(path);
- if (!file.exists()) {
- return bea;
- }
- if (!file.isDirectory()) {
- return bea;
- }
- String[] tempList = file.list();
- File temp = null;
- for (int i = 0; i < tempList.length; i++) {
- if (path.endsWith(File.separator)) {
- temp = new File(path + tempList[i]);
- } else {
- temp = new File(path + File.separator + tempList[i]);
- }
- if (temp.isFile()) {
- temp.delete();
- }
- if (temp.isDirectory()) {
- delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
- delFolder(path + "/" + tempList[i]);// 再删除空文件夹
- bea = true;
- }
- }
- return bea;
- }
- /**
- * 复制单个文件
- * @param oldPathFile 准备复制的文件源
- * @param newPathFile 拷贝到新绝对路径带文件名
- * @return
- */
- public void copyFile(String oldPathFile, String newPathFile) {
- try {
- int bytesum = 0;
- int byteread = 0;
- File oldfile = new File(oldPathFile);
- if (oldfile.exists()) { // 文件存在时
- InputStream inStream = new FileInputStream(oldPathFile); // 读入原文件
- FileOutputStream fs = new FileOutputStream(newPathFile);
- byte[] buffer = new byte[1444];
- while ((byteread = inStream.read(buffer)) != -1) {
- bytesum += byteread; // 字节数 文件大小
- System.out.println(bytesum);
- fs.write(buffer, 0, byteread);
- }
- inStream.close();
- }
- } catch (Exception e) {
- message = ("复制单个文件操作出错");
- }
- }
- /**
- * 复制整个文件夹的内容
- * @param oldPath 准备拷贝的目录
- * @param newPath 指定绝对路径的新目录
- * @return
- */
- public void copyFolder(String oldPath, String newPath) {
- try {
- new File(newPath).mkdirs(); // 如果文件夹不存在 则建立新文件夹
- File a = new File(oldPath);
- String[] file = a.list();
- File temp = null;
- for (int i = 0; i < file.length; i++) {
- if (oldPath.endsWith(File.separator)) {
- temp = new File(oldPath + file[i]);
- } else {
- temp = new File(oldPath + File.separator + file[i]);
- }
- if (temp.isFile()) {
- FileInputStream input = new FileInputStream(temp);
- FileOutputStream output = new FileOutputStream(newPath
- + "/" + (temp.getName()).toString());
- byte[] b = new byte[1024 * 5];
- int len;
- while ((len = input.read(b)) != -1) {
- output.write(b, 0, len);
- }
- output.flush();
- output.close();
- input.close();
- }
- if (temp.isDirectory()) {// 如果是子文件夹
- copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
- }
- }
- } catch (Exception e) {
- message = "复制整个文件夹内容操作出错";
- }
- }
- /**
- * 移动文件
- * @param oldPath
- * @param newPath
- * @return
- */
- public void moveFile(String oldPath, String newPath) {
- copyFile(oldPath, newPath);
- delFile(oldPath);
- }
- /**
- * 移动目录
- * @param oldPath
- * @param newPath
- * @return
- */
- public void moveFolder(String oldPath, String newPath) {
- copyFolder(oldPath, newPath);
- delFolder(oldPath);
- }
- File 操作
- file 操作
- file操作
- file操作
- file操作
- file操作
- File操作
- file操作
- File操作
- File操作
- FILE操作
- File操作 - File类/方法
- java File操作实例
- C++操作DB+FILE
- File的操作类
- C FILE操作
- 文件操作 File
- C FILE 操作
- Ubuntu使用体会------搁浅了
- java基础面试题
- java文件操作大全
- u盘自动运行病毒分析与解决方法
- poj 3507 (%g的使用)
- file 操作
- c++ string 类的对象的输出问题
- printf()输出格式控制 (转)
- jz4755 qt4+tslib移植
- 绕过图片打印成PDF时出现锯齿的问题
- 软件学习 视频教程
- 软件学习 视频教程
- 在Windows下使用GCC
- 减小linux内核大小的配置选项