多语言展示
当前在线:1534今日阅读:155今日分享:35

java常用文件操作

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。      Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等  。
工具/原料
1

电脑

2

myeclipse 2010或者intellij IDEA,eclipse

方法/步骤
1

第一种:根据文件地址判断文件是否存在。1、具体代码如下所示:import java.io.File;import java.io.IOException;public class Test6 { public static void main(String[] args) throws IOException { File file = new File('c:/a/test.txt'); File fileParent = file.getParentFile(); // 如果文件夹存在,删除 if (fileParent.exists() || fileParent.isDirectory()) { System.out.println('存在则执行删除!'); fileParent.delete(); // 删除空文件夹 } else { System.out.println('文件夹不存在,创建!'); fileParent.mkdir(); // 创建文件 file.createNewFile(); } }}2、测试

2

第二种:获取一个文件加下所有文件。1、代码如下所示:import java.io.File;import java.util.ArrayList;import java.util.List;public class Test7 { public static void main(String[] args) { List list = new ArrayList(); print('C:/a', list); // 循环输出list集合 for (Object object : list) { System.out.println(object); } } public static void print(String path, List list) { File file = new File(path); if (!file.isDirectory()) { System.out.println(path + ':不是文件夹'); return; } list.add(file.getPath()); File[] files = file.listFiles(); for (int j = 0; j < files.length; j++) { if (files[j].isFile()) { list.add(files[j].getPath() + files[j].getName()); } else if (files[j].isDirectory()) { print(files[j].getPath(), list); } } }}2、测试功能

3

第三种:将文件转为字节流。1、具体代码如下所示:import java.io.BufferedInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;public class Test8 { public static void main(String[] args) { ByteArrayOutputStream bos = null; BufferedInputStream in = null; try { File file = new File('D:/Documents/Downloads/新建文件夹 (2)/代理合同.pdf'); if (!file.exists()) { throw new FileNotFoundException('file not exists'); } bos = new ByteArrayOutputStream((int) file.length()); in = new BufferedInputStream(new FileInputStream(file)); int buf_size = 1024; byte[] buffer = new byte[buf_size]; int len = 0; while (-1 != (len = in.read(buffer, 0, buf_size))) { bos.write(buffer, 0, len); } System.out.println(bos.toByteArray()); } catch (Exception e) { // TODO: handle exception } }}

4

第四种:将文件字节流下载到前端。1、前端使用window的open方法好处是可以下载异常时可以打印提示信息。var features = 'height=768, width=1024, top=0, left=0, toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no';window.open('url', '', this.features);2、后台代码,先借助第三步将文件转为字节流(系统调用这样搞,一个系统中字节输出字符流更方便)/**     * 输出下载文件     * @param file     * @param fileName     * @param response     * @throws Exception     *             void Author: Skify Apr 25, 2012     */    public static void download(byte[] file, String fileName, HttpServletResponse response) throws Exception {        // 转化为UTF-8避免文件名乱码        fileName = changeFileName(fileName);        response.reset();        response.setContentType('application/x-msdownload');        response.addHeader('Content-Disposition', 'attachment;   filename=\'' + fileName + '\'');        BufferedOutputStream bos = null;        try {            bos = new BufferedOutputStream(response.getOutputStream());            bos.write(file);            bos.flush();        } catch (Exception e) {            e.printStackTrace();            throw e;        } finally {            try {                if (bos != null) {                    bos.close();                }            } catch (Exception ne) {                throw ne;            }        }    }        /**     * 统一修改文件名     *     * @param outputFileName     * @return String Author Skify Jun 13, 2011     */    private static String changeFileName(String outputFileName) {        int index = outputFileName.lastIndexOf('.');        String fileType = '';        if (index != -1) {            fileType = outputFileName.substring(index);        }        Date date = new Date();        SimpleDateFormat simpleDateFormat = new SimpleDateFormat('yyyyMMddHHmmss');        return simpleDateFormat.format(date) + fileType;    }}3、在页面输出提示信息,后台文件为空或者出现异常时向页面打印信息。PrintWriter pw= response.getWriter();pw.println(msg);

注意事项

jdk 1.6 myeclipse 2010

推荐信息