IO-文件 File 复制 读写 总结

一定要注意:

传入的参数,应该是包含文件名的完整路径名,不能把一个文件复制到【文件夹】中,因为【文件夹】本身是不能有输入输出流的,只能复制到一个【文件】中,否则会报异常。

以字节流读写的三种方式


public class Test {

    private static final String FILE_PATH = "e:\\";

    private static final String FILE_TYPE = ".exe";

    private static final String FILE_FROM = FILE_PATH + 0 + FILE_TYPE;

    private static final String COPY_FILE_1 = FILE_PATH + 1 + FILE_TYPE;

    private static final String COPY_FILE_2 = FILE_PATH + 2 + FILE_TYPE;

    private static final String COPY_FILE_3 = FILE_PATH + 3 + FILE_TYPE;

    public static void main(String[] args) throws IOException {

        copyByBufStream(FILE_FROM, COPY_FILE_1);

        copyByBufArray(FILE_FROM, COPY_FILE_2);

        copyByByte(FILE_FROM, COPY_FILE_3);

    }

    /**

     * 利用缓冲输入流读取到一个缓冲容器后再写入。建议使用

     */

    public static boolean copyByBufStream(String filePathFrom, String filePathTo) {

        try {

            BufferedInputStream bufis = new BufferedInputStream(new FileInputStream(filePathFrom));

            BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream(filePathTo));

            int ch = 0;

            while ((ch = bufis.read()) != -1) {

                bufos.write(ch);

            }

            bufos.close();

            bufis.close();

            return true;

        } catch (FileNotFoundException e) {

            e.printStackTrace();

            return false;

        } catch (IOException e) {

            e.printStackTrace();

            return false;

        }

    }

    /**

     * 每次读取一个指定长度数组的字节。建议使用

     */

    public static boolean copyByBufArray(String filePathFrom, String filePathTo) {

        try {

            FileInputStream fis = new FileInputStream(filePathFrom);

            FileOutputStream fos = new FileOutputStream(filePathTo);

            byte[] buf = new byte[1024];

            int len = 0;

            while ((len = fis.read(buf)) != -1) {

                fos.write(buf, 0, len);

            }

            fos.close();

            fis.close();

            return true;

        } catch (FileNotFoundException e) {

            e.printStackTrace();

            return false;

        } catch (IOException e) {

            e.printStackTrace();

            return false;

        }

    }

    /**

     * 一次读取一个字节。千万不要用,速度超级慢!

     */

    public static boolean copyByByte(String filePathFrom, String filePathTo) {

        try {

            FileInputStream fis = new FileInputStream(filePathFrom);

            FileOutputStream fos = new FileOutputStream(filePathTo);

            int ch = 0;

            while ((ch = fis.read()) != -1) {

                fos.write(ch);

            }

            fos.close();

            fis.close();

            return true;

        } catch (FileNotFoundException e) {

            e.printStackTrace();

            return false;

        } catch (IOException e) {

            e.printStackTrace();

            return false;

        }

    }

}

以字符流读写的三种方式


public class Test {

    private static final String FILE_PATH = "e:\\";

    private static final String FILE_TYPE = ".txt";

    private static final String FILE_FROM = FILE_PATH + 0 + FILE_TYPE;

    private static final String COPY_FILE_1 = FILE_PATH + 1 + FILE_TYPE;

    private static final String COPY_FILE_2 = FILE_PATH + 2 + FILE_TYPE;

    private static final String COPY_FILE_3 = FILE_PATH + 3 + FILE_TYPE;

    public static void main(String[] args) throws IOException {

        //注意,只能复制纯文本格式的文件,否则就会出现乱码

        copyByBufLine(FILE_FROM, COPY_FILE_1);

        copyByBufArray(FILE_FROM, COPY_FILE_2);

        copyByChar(FILE_FROM, COPY_FILE_3);

    }

    /**

     * 一次写入一行字符

     */

    public static boolean copyByBufLine(String filePathFrom, String filePathTo) {

        try {

            BufferedReader bufr = new BufferedReader(new FileReader(filePathFrom));

            BufferedWriter bufw = new BufferedWriter(new FileWriter(filePathTo));

            String line = null;

            //另外开辟一个缓冲区,存储读取的一行数据,返回包含该行内容的字符串,不包含换行符,如果已到达流末尾,则返回【 null】

            while ((line = bufr.readLine()) != null) {

                bufw.write(line);

                bufw.newLine();// 写入一个行分隔符

                bufw.flush();

            }

            bufr.close();

            bufw.close();

            return true;

        } catch (FileNotFoundException e) {

            e.printStackTrace();

            return false;

        } catch (IOException e) {

            e.printStackTrace();

            return false;

        }

    }

    /**

     * 一次写入指定个数的字符

     */

    public static boolean copyByBufArray(String filePathFrom, String filePathTo) {

        try {

            BufferedReader bufr = new BufferedReader(new FileReader(filePathFrom));

            BufferedWriter bufw = new BufferedWriter(new FileWriter(filePathTo));

            char[] buf = new char[1024];

            int len = 0;

            while ((len = bufr.read(buf)) != -1) {

                bufw.write(buf, 0, len);

                bufw.flush();

                len = 0;

            }

            bufr.close();

            bufw.close();

            return true;

        } catch (FileNotFoundException e) {

            e.printStackTrace();

            return false;

        } catch (IOException e) {

            e.printStackTrace();

            return false;

        }

    }

    /**

     * 一次写入一个字符

     */

    public static boolean copyByChar(String filePathFrom, String filePathTo) {

        try {

            BufferedReader bufr = new BufferedReader(new FileReader(filePathFrom));

            BufferedWriter bufw = new BufferedWriter(new FileWriter(filePathTo));

            int ch = 0;

            while ((ch = bufr.read()) != -1) {

                bufw.write(ch);//写入单个字符

            }

            bufr.close();

            bufw.close();

            return true;

        } catch (FileNotFoundException e) {

            e.printStackTrace();

            return false;

        } catch (IOException e) {

            e.printStackTrace();

            return false;

        }

    }

}

来自为知笔记(Wiz)

时间: 2024-10-22 05:40:23

IO-文件 File 复制 读写 总结的相关文章

流Stream 文件File 流IO

Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. 但本节讲述最基本的和流与 I/O 相关的功能.我们将通过一个个例子来学习这些功能. 读取控

java——用递归和IO流来实现文件的复制

1 import java.io.ByteArrayInputStream; 2 import java.io.ByteArrayOutputStream; 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.Ou

Java流(Stream)、文件(File)和IO

Java流(Stream).文件(File)和IO Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. Java为I/O提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. 但本节讲述最基本的和流与I/O相关的功能.我们将通过一个个例子来学习这些功能. 读取控制台输入 Jav

IO文件复制粘贴

项目 package com.I_O; import java.io.*; /** * 文件文件 */ public class Copy_I_O { /** * 复制粘贴方法 */ public void copy(){ InputStream is=null; OutputStream os=null; try { is=new FileInputStream("复制.txt"); os=new FileOutputStream("粘贴.txt"); byte[

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Date类,Calendar类package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; //Date类 public class DateTest { public static void main(String[] args) { Date

java IO文件读写例子(OutputStream,InputStream,Writer,Reader)

一,File创建文件 File file = new File("D:" + File.separator + "yi.txt"); 代码示例: package com.hbut.io; import java.io.File; import java.io.IOException; public class FileDemo { public static void main(String[] args) { File file = new File("

JAVA之IO技术文件的复制原理。

在Swing 中显示文本或提示信息的方法是使用标签,它支持文本字符串和图标.在应用程序的用户界面中,一个简短的文本标签可以使用户知道这些控件的目的,所以标签在Swing中是比较常用的控件. 1.标签的使用 标签由JLabel类定义,父类为JComponent类. 标签可以显示一行只读文本,一个图像或带图像的文本,它并不能产生任何类型的事件,只是简单低显示文本和图片,但是可以使用标签的特性指定标签上文本的对齐方式. JLabel类提供了多种构造方法,这样可以创建多种标签,例如显示只有文本的标签.只

IO的File类(用于对文件以及文件夹的操作)

1.      通过File去创建一个文件: File  file=new   File("apple.txt"); file.createNewFile(); 判断是否为文件: isFile()方法 2.      通过File去创建一个文件夹: File  file=new   File("apple"); file.mkdir(); 多级: File  dir=new   File("apple//dd//ff/gg"); dir.mkdi

01.使用File类读写文件

使用File类去读数据: 方法一:使用ReadAllBytes(); 方法 namespace _01.使用File类读写数据01 { class Program { static void Main(string[] args) { string path = @"C:\Users\zyj\Desktop\.NET base\0505.Net基础班第十二天\抽象类特点.txt"; byte[] b1=File.ReadAllBytes(path); //我们将读取的到的字节数组数据转