读书人

java读取资料大全

发布时间: 2012-08-30 09:55:54 作者: rapoo

java读取文件大全

1,以字节为单位2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容public class ReadFromFile {    /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */    public static void readFileByBytes(String fileName) {        File file = new File(fileName);        InputStream in =null;        try {            System.out.println( & quot;以字节为单位读取文件内容,一次读一个字节: & quot;);            // 一次读一个字节             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( & quot;以字节为单位读取文件内容,一次读多个字节: & quot;);            // 一次读多个字节             byte[] tempbytes = new byte[100];            int byteread = ; in =new FileInputStream(fileName);            ReadFromFile.showAvailableBytes( in );            // 读入多个字节到字节数组中,byteread为一次读入的字节数             while ((byteread = in.read(tempbytes)) != -1) {                System.out.write(tempbytes, , 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( & quot;以字符为单位读取文件内容,一次读一个字节: & quot;);            // 一次读一个字符             reader = new InputStreamReader(new FileInputStream(file));            int tempchar;            while ((tempchar = reader.read()) != -1) {                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。                 // 但如果这两个字符分开显示时,会换两次行。                 // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。                 if (((char) tempchar) != '\r') {                    System.out.print((char) tempchar);                }            }            reader.close();        } catch(Exception e) {            e.printStackTrace();        }        try {            System.out.println( & quot;以字符为单位读取文件内容,一次读多个字节: & quot;);            // 一次读多个字符             char[] tempchars = new char[30];            int charread = ;            reader = new InputStreamReader(new FileInputStream(fileName));            // 读入多个字符到字符数组中,charread为一次读取字符数             while ((charread = reader.read(tempchars)) != -1) {                // 同样屏蔽掉\r不显示                 if ((charread == tempchars.length) & amp; & amp; (tempchars[tempchars.length - 1] != '\r')) {                    System.out.print(tempchars);                } else {                    for (int i = ; i 4) ? 4 : ;                    // 将读文件的开始位置移到beginIndex位置。                     randomFile.seek(beginIndex);                    byte[] bytes = new byte[10];                    int byteread = ;                    // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。                     // 将一次读取的字节数赋给byteread                     while ((byteread = randomFile.read(bytes)) != -1) {                        System.out.write(bytes, , 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( & quot;当前字节输入流中的字节数为: " + in.available());                } catch(IOException e) {                    e.printStackTrace();                }            }            public static void main(String[] args) {                String fileName = "                C: /temp/newTemp.txt & quot;;                ReadFromFile.readFileByBytes(fileName);                ReadFromFile.readFileByChars(fileName);                ReadFromFile.readFileByLines(fileName);                ReadFromFile.readFileByRandomAccess(fileName);            }        }        5、将内容追加到文件尾部        public class AppendToFile {            /** * A方法追加文件:使用RandomAccessFile */            public static void appendMethodA(String fileName, String content) {                try {                    // 打开一个随机访问文件流,按读写方式                     RandomAccessFile randomFile = new RandomAccessFile(fileName, " rw & quot;);                    // 文件长度,字节数                     long fileLength = randomFile.length();                    //将写文件指针移到文件尾。                     randomFile.seek(fileLength);                    randomFile.writeBytes(content);                    randomFile.close();                } catch(IOException e) {                    e.printStackTrace();                }            }            /** * B方法追加文件:使用FileWriter */            public static void appendMethodB(String fileName, String content) {                try {                    //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件                     FileWriter writer = new FileWriter(fileName, true);                    writer.write(content);                    writer.close();                } catch(IOException e) {                    e.printStackTrace();                }            }            public static void main(String[] args) {                String fileName = "                C: /temp/newTemp.txt & quot;;                String content = "                new append ! ";                //按方法A追加文件                 AppendToFile.appendMethodA(fileName, content);                AppendToFile.appendMethodA(fileName, " append end.\n & quot;);                //显示文件内容                 ReadFromFile.readFileByLines(fileName);                //按方法B追加文件                 AppendToFile.appendMethodB(fileName, content);                AppendToFile.appendMethodB(fileName, " append end.\n & quot;);                //显示文件内容                 ReadFromFile.readFileByLines(fileName);            }        }

读书人网 >编程

热点推荐