zoukankan      html  css  js  c++  java
  • Java读写文件的几种方式

      自工作以后好久没有整理Java的基础知识了。趁有时间,整理一下Java文件操作的几种方式。无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外。Java读写文件一般是通过字节、字符和行三种方式来进行文件的操作。

    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.Reader;
    
    public class FileUtil {
    
        /**
         * 按行读取文件
         */
        public static void ReadFileByLine(String filename) {
            File file = new File(filename);
            InputStream is = null;
            Reader reader = null;
            BufferedReader bufferedReader = null;
            try {
                is = new FileInputStream(file);
                reader = new InputStreamReader(is);
                bufferedReader = new BufferedReader(reader);
                String line = null;
                while ((line = bufferedReader.readLine()) != null) {
                    System.out.println(line);
                }
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null != bufferedReader)
                        bufferedReader.close();
                    if (null != reader)
                        reader.close();
                    if (null != is)
                        is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 按字节读取文件
         * 
         * @param filename
         */
        public static void ReadFileByBytes(String filename) {
            File file = new File(filename);
            InputStream is = null;
            try {
                is = new FileInputStream(file);
                int index = 0;
                while (-1 != (index = is.read())) {
                    System.out.write(index);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                try {
                    if (null != is)
                        is.close();
    
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("-----------------------------------");
            try {
                is = new FileInputStream(file);
                byte[] tempbyte = new byte[1000];
                int index = 0;
                while (-1 != (index = is.read(tempbyte))) {
                    System.out.write(tempbyte, 0, index);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                try {
                    if (null != is)
                        is.close();
    
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 按字符读取文件
         * 
         * @param filename
         */
        public static void ReadFileByChar(String filename) {
            File file = new File(filename);
            InputStream is = null;
            Reader isr = null;
            try {
                is = new FileInputStream(file);
                isr = new InputStreamReader(is);
                int index = 0;
                while (-1 != (index = isr.read())) {
                    System.out.print((char) index);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null != is)
                        is.close();
                    if (null != isr)
                        isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 通过OutputStreamWriter写文件
         * 
         * @param filename
         */
        public static void Write2FileByOutputStream(String filename) {
            File file = new File(filename);
            FileOutputStream fos = null;
            // BufferedOutputStream bos = null;
            OutputStreamWriter osw = null;
            try {
                if (!file.exists()) {
                    file.createNewFile();
                }
                fos = new FileOutputStream(file);
                osw = new OutputStreamWriter(fos);
                osw.write("Write2FileByOutputStream");
                // bos = new BufferedOutputStream(fos);
                // bos.write("Write2FileByOutputStream".getBytes());
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (null != osw) {
                    try {
                        osw.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (null != fos) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        /**
         * 通过BufferedWriter写文件
         * 
         * @param filename
         */
        public static void Write2FileByBuffered(String filename) {
            File file = new File(filename);
            FileOutputStream fos = null;
            OutputStreamWriter osw = null;
            BufferedWriter bw = null;
            try {
                if (!file.exists()) {
                    file.createNewFile();
                }
                fos = new FileOutputStream(file);
                osw = new OutputStreamWriter(fos);
                bw = new BufferedWriter(osw);
                bw.write("Write2FileByBuffered");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (null != bw) {
                    try {
                        bw.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (null != osw) {
                    try {
                        osw.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (null != fos) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        /**
         * 通过FileWriter写文件
         * 
         * @param filename
         */
        public static void Write2FileByFileWriter(String filename) {
            File file = new File(filename);
            FileWriter fw = null;
            try {
                if (!file.exists()) {
                    file.createNewFile();
                }
                fw = new FileWriter(file);
                fw.write("Write2FileByFileWriter");
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (null != fw) {
                    try {
                        fw.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        public static void main(String[] args) {
            String filename = "D:/testfile.txt";
            // ReadFileByLine(filename);
            // ReadFileByBytes(filename);
            // ReadFileByChar(filename);
            String writeFile = "javawrite2file.txt";
            // Write2FileByOutputStream(writeFile);
            // Write2FileByBuffered(writeFile);
            Write2FileByFileWriter(writeFile);
        }
    }

      Java读写文件的大体情况应该就上面的几种方式,然而从效率的角度来讲。InputStream、OutputStream的效率比BufferedInputStream、BufferedOutputStream的效率要差,至于Reader、Writer没做进一步的比较。网上看到一些资料说Java.nio的效率最高,没有进一步做比较,不得而知了,等有时间再做进一步测试吧。

  • 相关阅读:
    statusStrip控件上的项目靠右对齐
    HTML基础——列表(一)
    HTML基础——HTML基本要素(二)
    HTML基础——文字格式设置
    HTML基础----HTML基本要素(一)
    web下载的dll文件无法加载进项目
    Silverlight加载第一个Map
    ArcGIS API for Silverlight map中添加graphic对象(文字、几何图形、图片)
    BackgroundWorker控件使用(一)
    Winform程序实现COM口通信
  • 原文地址:https://www.cnblogs.com/rwxwsblog/p/4798855.html
Copyright © 2011-2022 走看看