File对象的基本操作学习
来源:互联网 发布:淘宝客服简历工作描述 编辑:程序博客网 时间:2024/05/16 15:42
对File的一些基础操作
在学习的过程当中主要看了java的api,同时参考apache的一些file工具类,io工具类,感觉收获不小
- 新增文件
- 新增文件目录,若目录不存在,自动进行创建;File对象的createFile方法不支持目录不存在的创建
- 支持多级空目录的创建
- 删除文件目录,若目录里面存在文件,则进行递归删除
- 支持多级目录的删除,支持非空目录删除
- 移动文件(目录)到指定的位置
- 复制文件(目录)到指定的位置,在复制含有文件的目录的时候未完成
- 目标目录为空时,自动创建
- 支持复制文件夹及文件夹下的文件
- 显示文件内容
需要注意事项
- createNewFile不支持目录不存在的文件创建方法
- mkdirs支持多目录不存在的递归创建
- rename只支持同级目录下的重命名,不支持不同目录的重命名
- intputStream入参对象不能为目录
package com.pgy.io;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.Reader;import java.io.StringWriter;import java.io.Writer;public class FileApi { /** 文件读取结束标志 */ private static final int EOF = -1; /** 默认读取空间大小 */ private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; public static void main(String[] args) { String deleteFilePath = "/Users/admin/logs/aa/"; String createFilePath = "/Users/admin/logs/aa/bb/cc/test.txt"; String targetFilePath = "/Users/admin/logs/aa/bb/cc/"; String sourceDirPath = "/Users/admin/logs/aa/bb/dd/"; File createFile = new File(createFilePath); File DeleteFile = new File(deleteFilePath); File targetFile = new File(targetFilePath); File sourceFile = new File(sourceDirPath); // createFile(createFile); // // copyFile(targetFile, sourceFile); // // mvFile(createFile, targetFile); // deleteFile(DeleteFile); // System.out.println(getFileContent(targetFile, "utf-8")); } /** * 获取file当中的内容,为string类型 * @param file file对象 * @param charset 字符串编码 * @return */ public static final String getFileContent(File file, String charset) { FileInputStream fis = null; try { fis = new FileInputStream(file); Reader reader = new InputStreamReader(fis, charset); StringWriter sw = new StringWriter(); parseReaderToWrite(reader, sw); return sw.toString(); } catch (Exception e) { } return null; } /** * File.rename方法只支持同级目录下的重命名 * 先拷贝文件,然后再删除源文件 * @param sourceFile * @param targetFile */ public static final void mvFile(File sourceFile, File targetFile) { copyFile(sourceFile, targetFile); deleteFile(sourceFile); } /** * 用FileInputStream与FileOutputStream方式进行对文件的读写操作,完成copy * 也可以通过FileReader与FileWirte进行实现 * @param sourceFile * @param targetFile */ public static final void copyFile(File sourceFile, File targetFile) { FileInputStream fis = null; FileOutputStream fos = null; if (!targetFile.exists()) { createFile(targetFile); } try { File[] fileList = sourceFile.listFiles(); for (File file : fileList) { File newTargetFile = null; if (file.isFile()) { fis = new FileInputStream(file); newTargetFile = new File(targetFile, file.getName()); fos = new FileOutputStream(newTargetFile); parseInputStreamToOutputStream(fis, fos); fis.close(); fos.close(); } if (file.isDirectory()) { File oldFile = new File(sourceFile, file.getName()); File newFile = new File(targetFile, file.getName()); copyFile(oldFile, newFile); } } } catch (Exception e) { e.printStackTrace(); } } /** * 将inputStream转换为OutputStream * @param input * @param output * @return * @throws IOException */ public static long parseInputStreamToOutputStream(InputStream input, OutputStream output) throws IOException { byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; long count = 0; int n = 0; while (EOF != (n = input.read(buffer))) { output.write(buffer, 0, n); count += n; } return count; } /** * 将reader转换为write * @param input * @param output * @return * @throws IOException */ public static long parseReaderToWrite(Reader input, Writer output) throws IOException { char[] buffer = new char[DEFAULT_BUFFER_SIZE]; long count = 0; int n = 0; while (EOF != (n = input.read(buffer))) { output.write(buffer, 0, n); count += n; } return count; } /** * 删除文件 * File.delete不支持目录不为空的删除 * 判断file对象列表当中的目录进行循环删除 * @param file */ public static final void deleteFile(File file) { if (file.exists()) { file.delete(); } if (file.isDirectory()) { File[] fileList = file.listFiles(); for (File fileChild : fileList) { deleteFile(fileChild); } } } /** * File对象createFile方法,不支持目录不存在的文件创建 * 对其parent进行判断,若不存在,则对目录先进行递归创建 * * @param filePath */ public static final void createFile(File file) { File fileDir = file.getParentFile(); if (!fileDir.exists()) { fileDir.mkdirs(); } if (!file.getName().contains(".") && !file.exists()) { file.mkdir(); } try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } /** * 合并字符串为目录 * 由于不同的操作系统当中对于目录的层级分割是不一样的,例如:windows:\ 其它的:/ * 在拼接目录的时候我们不能单纯的使用/或\来进行拼接 * @param parent * @param child * @return */ public static final File spliceFile(String parent, String child) { return new File(parent, child); } public static void fileInfoPrint(File file) throws IOException { System.out.println(file.canRead()); System.out.println(file.canWrite()); System.out.println(file.canExecute()); System.out.println(file.getAbsolutePath()); System.out.println(file.getAbsoluteFile()); System.out.println(file.getCanonicalPath()); System.out.println(file.getUsableSpace()); System.out.println(file.getTotalSpace()); System.out.println(file.getName()); System.out.println(file.getParent()); System.out.println(file.getParentFile()); System.out.println(file.getPath()); System.out.println(file.isDirectory()); System.out.println(file.isFile()); System.out.println(file.isHidden()); System.out.println(file.isAbsolute()); System.out.println(file.length()); System.out.println(file.exists()); System.out.println(file.hashCode()); System.out.println(file.toString()); System.out.println(file.toPath()); System.out.println(file.toURI()); file.setExecutable(true, false); file.setReadable(true); file.setWritable(true); file.setReadOnly(); }}
0 0
- File对象的基本操作学习
- File的基本操作
- IO流与File对象基本操作
- Java学习提要——File类的基本操作
- File的基本实用操作
- Java File的基本操作
- 文件File的基本操作
- File类的基本操作
- File文件的 基本操作
- File类的基本操作
- File对象的简单操作
- day22_IO流_键盘录入+转换流+流的操作基本规律+File对象
- 黑马程序员-操作基本数据类型的流对象学习日记
- java File的基本操作实例
- c# file directory 的基本操作
- java File的基本操作实例
- Java中File的基本操作
- java File类的基本操作
- centos 6.3用yum安装中文输入法
- (持续更新)日积月累——iOS开发过程中遇到的一些小问题
- COCI2012 round 2 INSPEKTOR 查税
- (3.1.8)有关forward和redirect的描述
- Hibernate的持久化类
- File对象的基本操作学习
- 【HDOJ 5373】The shortest problem
- Android 工具类】常用工具类(方法)大全
- hdu5375Gray code dp
- poj 1251 Jungle Roads【prim & kruskal】
- HTML5本地存储Localstorage
- web开发中特殊字符的对应值与转义字符(转载)
- 使用 /proc 文件系统来访问 Linux 内核的内容
- Mac OSX下使用apt-get命令