zoukankan      html  css  js  c++  java
  • 读文件工具类

    package hiveTest;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.RandomAccessFile;
    import java.io.Reader;
    
    public class ReadFromFile {
        /**
         * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
         */
        public static void readFileByBytes(String fileName) {
            File file = new File(fileName);
            InputStream in = null;
            try {
                System.out.println("以字节为单位读取文件内容,一次读一个字节:");
                // 一次读一个字节
                in = new FileInputStream(file);
                int tempbyte;
                while ((tempbyte = in.read()) != -1) {
                    System.out.write(tempbyte);
                }
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
                return;
            }
            try {
                System.out.println("以字节为单位读取文件内容,一次读多个字节:");
                // 一次读多个字节
                byte[] tempbytes = new byte[100];
                int byteread = 0;
                in = new FileInputStream(fileName);
                ReadFromFile.showAvailableBytes(in);
                // 读入多个字节到字节数组中,byteread为一次读入的字节数
                while ((byteread = in.read(tempbytes)) != -1) {
                    System.out.write(tempbytes, 0, byteread);
                }
            } catch (Exception e1) {
                e1.printStackTrace();
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e1) {
                    }
                }
            }
        }
    
        /**
         * 以字符为单位读取文件,常用于读文本,数字等类型的文件
         */
        public static void readFileByChars(String fileName) {
            File file = new File(fileName);
            Reader reader = null;
            try {
                System.out.println("以字符为单位读取文件内容,一次读一个字节:");
                // 一次读一个字符
                reader = new InputStreamReader(new FileInputStream(file));
                int tempchar;
                while ((tempchar = reader.read()) != -1) {
                    // 对于windows下,
    这两个字符在一起时,表示一个换行。
                    // 但如果这两个字符分开显示时,会换两次行。
                    // 因此,屏蔽掉
    ,或者屏蔽
    。否则,将会多出很多空行。
                    if (((char) tempchar) != '
    ') {
                        System.out.print((char) tempchar);
                    }
                }
                reader.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                System.out.println("以字符为单位读取文件内容,一次读多个字节:");
                // 一次读多个字符
                char[] tempchars = new char[30];
                int charread = 0;
                reader = new InputStreamReader(new FileInputStream(fileName));
                // 读入多个字符到字符数组中,charread为一次读取字符数
                while ((charread = reader.read(tempchars)) != -1) {
                    // 同样屏蔽掉
    不显示
                    if ((charread == tempchars.length)
                            && (tempchars[tempchars.length - 1] != '
    ')) {
                        System.out.print(tempchars);
                    } else {
                        for (int i = 0; i < charread; i++) {
                            if (tempchars[i] == '
    ') {
                                continue;
                            } else {
                                System.out.print(tempchars[i]);
                            }
                        }
                    }
                }
    
            } catch (Exception e1) {
                e1.printStackTrace();
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e1) {
                    }
                }
            }
        }
    
        /**
         * 以行为单位读取文件,常用于读面向行的格式化文件
         */
        public static void readFileByLines(String fileName) {
            File file = new File(fileName);
            BufferedReader reader = null;
            try {
                System.out.println("以行为单位读取文件内容,一次读一整行:");
                reader = new BufferedReader(new FileReader(file));
                String tempString = null;
                int line = 1;
                // 一次读入一行,直到读入null为文件结束
                while ((tempString = reader.readLine()) != null) {
                    // 显示行号
                    System.out.println("line " + line + ": " + tempString);
                    line++;
                }
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e1) {
                    }
                }
            }
        }
    
        /**
         * 随机读取文件内容
         */
        public static void readFileByRandomAccess(String fileName) {
            RandomAccessFile randomFile = null;
            try {
                System.out.println("随机读取一段文件内容:");
                // 打开一个随机访问文件流,按只读方式
                randomFile = new RandomAccessFile(fileName, "r");
                // 文件长度,字节数
                long fileLength = randomFile.length();
                // 读文件的起始位置
                int beginIndex = (fileLength > 4) ? 4 : 0;
                // 将读文件的开始位置移到beginIndex位置。
                randomFile.seek(beginIndex);
                byte[] bytes = new byte[10];
                int byteread = 0;
                // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。
                // 将一次读取的字节数赋给byteread
                while ((byteread = randomFile.read(bytes)) != -1) {
                    System.out.write(bytes, 0, byteread);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (randomFile != null) {
                    try {
                        randomFile.close();
                    } catch (IOException e1) {
                    }
                }
            }
        }
    
        /**
         * 显示输入流中还剩的字节数
         */
        private static void showAvailableBytes(InputStream in) {
            try {
                System.out.println("当前字节输入流中的字节数为:" + in.available());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            String fileName = "C:\Users\lenovo\Desktop\大数据设计\community_data\data_example_to_qiaokai-utf8.txt";
            ReadFromFile.readFileByBytes(fileName);
    //        ReadFromFile.readFileByChars(fileName);
    //        ReadFromFile.readFileByLines(fileName);
    //        ReadFromFile.readFileByRandomAccess(fileName);
        }
    }

    java操作字符的方法:

    package hiveTest;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class DataProcess {
    
        public static void main(String[] args) {
            
            String Dir = "C:\Users\lenovo\Desktop\大数据设计\community_data\result2";
            
            String destDir = "C:\Users\lenovo\Desktop\大数据设计\community_data\tran.txt";
            
            File f = new File(Dir);
            File fwriter =new File(destDir);
            BufferedWriter writer = null;
            try {
                writer = new BufferedWriter(new FileWriter(fwriter));
            } catch (IOException e2) {
                e2.printStackTrace();
            }
            if (f.isDirectory()) {
                File[] list = f.listFiles();
                for(File f1 :list){
                    
                    StringBuffer  bf =new StringBuffer();
                    //得到名字  且以,分割
                    System.out.print(f1.getName());
                    String name = f1.getName();
                    
                    bf.append(name.substring(0, name.indexOf("."))+",");
                    //得到内容 且以| 分割
    //                ReadFromFile.readFileByLines(f1.getAbsolutePath());
                            BufferedReader reader = null;
                          
                            try {
    //                            System.out.println("以行为单位读取文件内容,一次读一整行:");
                                reader = new BufferedReader(new FileReader(f1));
                              
                                String tempString = null;
                                int line = 1;
                                // 一次读入一行,直到读入null为文件结束
                                while ((tempString = reader.readLine()) != null) {
                                    // 显示行号
                                    if(tempString!=null&&tempString!=""){
    //                                    System.out.println("line " + line + ": " + tempString);
                                        //line 1: 39680 65255
                                        String[] tmp =tempString.split(" ");
                                        if(tmp.length>1){
                                            for(String s :tmp){
                                                System.out.print(s+"|");    
                                                bf.append(s+"|");
                                            }
                                        }
                                        line++;
                                    }
                                }
                                
                                String tran = bf.toString();
                                
                                String res =tran.substring(0, tran.length()-1);
    //                            bf.append("
    ");
                                writer.write(res+"
    ");
                                
                                reader.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            } finally {
                                if (reader != null) {
                                    try {
                                        reader.close();
                                    } catch (IOException e1) {
                                    }
                                }
                            }
                    System.out.println();
                }
                
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    if (writer != null) {
                        try {
                            writer.close();
                        } catch (IOException e1) {
                        }
                    }
                }
                
                
            }
    
        }
    
    }
  • 相关阅读:
    如何通过网页远程控制linux --远程访问Linux桌面
    用Python快速实现HTTP和FTP服务器
    两台server间测速工具iperf3
    向Linux进程发送信号
    谓语必须为动词或动词短语~
    2021-6-2 支撑
    运用学过的设计原则和思想完善之前讲的性能计数器项目(下)
    运用学过的设计原则和思想完善之前讲的性能计数器项目(上)
    总结回顾面向对象、设计原则、编程规范、重构技巧等知识点
    实战二(下):重构ID生成器项目中各函数的异常处理代码
  • 原文地址:https://www.cnblogs.com/joqk/p/3981488.html
Copyright © 2011-2022 走看看