java读取文件方法大全

1 篇文章 0 订阅

一、多种方式读文件内容。

1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容
4、随机读取文件内容

Java代码
1.import java.io.BufferedReader;   
2.import java.io.File;   
3.import java.io.FileInputStream;   
4.import java.io.FileReader;   
5.import java.io.IOException;   
6.import java.io.InputStream;   
7.import java.io.InputStreamReader;   
8.import java.io.RandomAccessFile;   
9.import java.io.Reader;   
10.  
11.public class ReadFromFile {   
12.    /**  
13.     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。  
14.     *   
15.     * @param fileName  
16.     *            文件的名  
17.     */  
18.    public static void readFileByBytes(String fileName) {   
19.        File file = new File(fileName);   
20.        InputStream in = null;   
21.        try {   
22.            System.out.println("以字节为单位读取文件内容,一次读一个字节:");   
23.            // 一次读一个字节   
24.            in = new FileInputStream(file);   
25.            int tempbyte;   
26.            while ((tempbyte = in.read()) != -1) {   
27.                System.out.write(tempbyte);   
28.            }   
29.            in.close();   
30.        } catch (IOException e) {   
31.            e.printStackTrace();   
32.            return;   
33.        }   
34.        try {   
35.            System.out.println("以字节为单位读取文件内容,一次读多个字节:");   
36.            // 一次读多个字节   
37.            byte[] tempbytes = new byte[100];   
38.            int byteread = 0;   
39.            in = new FileInputStream(fileName);   
40.            ReadFromFile.showAvailableBytes(in);   
41.            // 读入多个字节到字节数组中,byteread为一次读入的字节数   
42.            while ((byteread = in.read(tempbytes)) != -1) {   
43.                System.out.write(tempbytes, 0, byteread);   
44.            }   
45.        } catch (Exception e1) {   
46.            e1.printStackTrace();   
47.        } finally {   
48.            if (in != null) {   
49.                try {   
50.                    in.close();   
51.                } catch (IOException e1) {   
52.                }   
53.            }   
54.        }   
55.    }   
56.  
57.    /**  
58.     * 以字符为单位读取文件,常用于读文本,数字等类型的文件  
59.     *   
60.     * @param fileName  
61.     *            文件名  
62.     */  
63.    public static void readFileByChars(String fileName) {   
64.        File file = new File(fileName);   
65.        Reader reader = null;   
66.        try {   
67.            System.out.println("以字符为单位读取文件内容,一次读一个字节:");   
68.            // 一次读一个字符   
69.            reader = new InputStreamReader(new FileInputStream(file));   
70.            int tempchar;   
71.            while ((tempchar = reader.read()) != -1) {   
72.                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。   
73.                // 但如果这两个字符分开显示时,会换两次行。   
74.                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。   
75.                if (((char) tempchar) != '\r') {   
76.                    System.out.print((char) tempchar);   
77.                }   
78.            }   
79.            reader.close();   
80.        } catch (Exception e) {   
81.            e.printStackTrace();   
82.        }   
83.        try {   
84.            System.out.println("以字符为单位读取文件内容,一次读多个字节:");   
85.            // 一次读多个字符   
86.            char[] tempchars = new char[30];   
87.            int charread = 0;   
88.            reader = new InputStreamReader(new FileInputStream(fileName));   
89.            // 读入多个字符到字符数组中,charread为一次读取字符数   
90.            while ((charread = reader.read(tempchars)) != -1) {   
91.                // 同样屏蔽掉\r不显示   
92.                if ((charread == tempchars.length)   
93.                        && (tempchars[tempchars.length - 1] != '\r')) {   
94.                    System.out.print(tempchars);   
95.                } else {   
96.                    for (int i = 0; i < charread; i++) {   
97.                        if (tempchars[i] == '\r') {   
98.                            continue;   
99.                        } else {   
100.                            System.out.print(tempchars[i]);   
101.                        }   
102.                    }   
103.                }   
104.            }   
105.  
106.        } catch (Exception e1) {   
107.            e1.printStackTrace();   
108.        } finally {   
109.            if (reader != null) {   
110.                try {   
111.                    reader.close();   
112.                } catch (IOException e1) {   
113.                }   
114.            }   
115.        }   
116.    }   
117.  
118.    /**  
119.     * 以行为单位读取文件,常用于读面向行的格式化文件  
120.     *   
121.     * @param fileName  
122.     *            文件名  
123.     */  
124.    public static void readFileByLines(String fileName) {   
125.        File file = new File(fileName);   
126.        BufferedReader reader = null;   
127.        try {   
128.            System.out.println("以行为单位读取文件内容,一次读一整行:");   
129.            reader = new BufferedReader(new FileReader(file));   
130.            String tempString = null;   
131.            int line = 1;   
132.            // 一次读入一行,直到读入null为文件结束   
133.            while ((tempString = reader.readLine()) != null) {   
134.                // 显示行号   
135.                System.out.println("line " + line + ": " + tempString);   
136.                line++;   
137.            }   
138.            reader.close();   
139.        } catch (IOException e) {   
140.            e.printStackTrace();   
141.        } finally {   
142.            if (reader != null) {   
143.                try {   
144.                    reader.close();   
145.                } catch (IOException e1) {   
146.                }   
147.            }   
148.        }   
149.    }   
150.  
151.    /**  
152.     * 随机读取文件内容  
153.     *   
154.     * @param fileName  
155.     *            文件名  
156.     */  
157.    public static void readFileByRandomAccess(String fileName) {   
158.        RandomAccessFile randomFile = null;   
159.        try {   
160.            System.out.println("随机读取一段文件内容:");   
161.            // 打开一个随机访问文件流,按只读方式   
162.            randomFile = new RandomAccessFile(fileName, "r");   
163.            // 文件长度,字节数   
164.            long fileLength = randomFile.length();   
165.            // 读文件的起始位置   
166.            int beginIndex = (fileLength > 4) ? 4 : 0;   
167.            // 将读文件的开始位置移到beginIndex位置。   
168.            randomFile.seek(beginIndex);   
169.            byte[] bytes = new byte[10];   
170.            int byteread = 0;   
171.            // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。   
172.            // 将一次读取的字节数赋给byteread   
173.            while ((byteread = randomFile.read(bytes)) != -1) {   
174.                System.out.write(bytes, 0, byteread);   
175.            }   
176.        } catch (IOException e) {   
177.            e.printStackTrace();   
178.        } finally {   
179.            if (randomFile != null) {   
180.                try {   
181.                    randomFile.close();   
182.                } catch (IOException e1) {   
183.                }   
184.            }   
185.        }   
186.    }   
187.  
188.    /**  
189.     * 显示输入流中还剩的字节数  
190.     *   
191.     * @param in  
192.     */  
193.    private static void showAvailableBytes(InputStream in) {   
194.        try {   
195.            System.out.println("当前字节输入流中的字节数为:" + in.available());   
196.        } catch (IOException e) {   
197.            e.printStackTrace();   
198.        }   
199.    }   
200.  
201.    public static void main(String[] args) {   
202.        String fileName = "C:/temp/newTemp.txt";   
203.        ReadFromFile.readFileByBytes(fileName);   
204.        ReadFromFile.readFileByChars(fileName);   
205.        ReadFromFile.readFileByLines(fileName);   
206.        ReadFromFile.readFileByRandomAccess(fileName);   
207.    }   
208.}  
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 {
    /**
     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
     *
     * @param fileName
     *            文件的名
     */
    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) {
                }
            }
        }
    }

    /**
     * 以字符为单位读取文件,常用于读文本,数字等类型的文件
     *
     * @param fileName
     *            文件名
     */
    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下,\r\n这两个字符在一起时,表示一个换行。
                // 但如果这两个字符分开显示时,会换两次行。
                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
                if (((char) tempchar) != '\r') {
                    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) {
                // 同样屏蔽掉\r不显示
                if ((charread == tempchars.length)
                        && (tempchars[tempchars.length - 1] != '\r')) {
                    System.out.print(tempchars);
                } else {
                    for (int i = 0; i < charread; i++) {
                        if (tempchars[i] == '\r') {
                            continue;
                        } else {
                            System.out.print(tempchars[i]);
                        }
                    }
                }
            }

        } catch (Exception e1) {
            e1.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
    }

    /**
     * 以行为单位读取文件,常用于读面向行的格式化文件
     *
     * @param fileName
     *            文件名
     */
    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) {
                }
            }
        }
    }

    /**
     * 随机读取文件内容
     *
     * @param fileName
     *            文件名
     */
    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) {
                }
            }
        }
    }

    /**
     * 显示输入流中还剩的字节数
     *
     * @param in
     */
    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:/temp/newTemp.txt";
        ReadFromFile.readFileByBytes(fileName);
        ReadFromFile.readFileByChars(fileName);
        ReadFromFile.readFileByLines(fileName);
        ReadFromFile.readFileByRandomAccess(fileName);
    }
}

二、将内容追加到文件尾部

Java代码
1.import java.io.FileWriter;   
2.import java.io.IOException;   
3.import java.io.RandomAccessFile;   
4.  
5./**  
6. * 将内容追加到文件尾部  
7. */  
8.public class AppendToFile {   
9.  
10.    /**  
11.     * A方法追加文件:使用RandomAccessFile  
12.     * @param fileName 文件名  
13.     * @param content 追加的内容  
14.     */  
15.    public static void appendMethodA(String fileName, String content) {   
16.        try {   
17.            // 打开一个随机访问文件流,按读写方式   
18.            RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");   
19.            // 文件长度,字节数   
20.            long fileLength = randomFile.length();   
21.            //将写文件指针移到文件尾。   
22.            randomFile.seek(fileLength);   
23.            randomFile.writeBytes(content);   
24.            randomFile.close();   
25.        } catch (IOException e) {   
26.            e.printStackTrace();   
27.        }   
28.    }   
29.  
30.    /**  
31.     * B方法追加文件:使用FileWriter  
32.     * @param fileName  
33.     * @param content  
34.     */  
35.    public static void appendMethodB(String fileName, String content) {   
36.        try {   
37.            //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件   
38.            FileWriter writer = new FileWriter(fileName, true);   
39.            writer.write(content);   
40.            writer.close();   
41.        } catch (IOException e) {   
42.            e.printStackTrace();   
43.        }   
44.    }   
45.  
46.    public static void main(String[] args) {   
47.        String fileName = "C:/temp/newTemp.txt";   
48.        String content = "new append!";   
49.        //按方法A追加文件   
50.        AppendToFile.appendMethodA(fileName, content);   
51.        AppendToFile.appendMethodA(fileName, "append end. \n");   
52.        //显示文件内容   
53.        ReadFromFile.readFileByLines(fileName);   
54.        //按方法B追加文件   
55.        AppendToFile.appendMethodB(fileName, content);   
56.        AppendToFile.appendMethodB(fileName, "append end. \n");   
57.        //显示文件内容   
58.        ReadFromFile.readFileByLines(fileName);   
59.    }   
60.}  java读取文件方法大全
一、多种方式读文件内容。

1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容
4、随机读取文件内容

Java代码
1.import java.io.BufferedReader;   
2.import java.io.File;   
3.import java.io.FileInputStream;   
4.import java.io.FileReader;   
5.import java.io.IOException;   
6.import java.io.InputStream;   
7.import java.io.InputStreamReader;   
8.import java.io.RandomAccessFile;   
9.import java.io.Reader;   
10.  
11.public class ReadFromFile {   
12.    /**  
13.     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。  
14.     *   
15.     * @param fileName  
16.     *            文件的名  
17.     */  
18.    public static void readFileByBytes(String fileName) {   
19.        File file = new File(fileName);   
20.        InputStream in = null;   
21.        try {   
22.            System.out.println("以字节为单位读取文件内容,一次读一个字节:");   
23.            // 一次读一个字节   
24.            in = new FileInputStream(file);   
25.            int tempbyte;   
26.            while ((tempbyte = in.read()) != -1) {   
27.                System.out.write(tempbyte);   
28.            }   
29.            in.close();   
30.        } catch (IOException e) {   
31.            e.printStackTrace();   
32.            return;   
33.        }   
34.        try {   
35.            System.out.println("以字节为单位读取文件内容,一次读多个字节:");   
36.            // 一次读多个字节   
37.            byte[] tempbytes = new byte[100];   
38.            int byteread = 0;   
39.            in = new FileInputStream(fileName);   
40.            ReadFromFile.showAvailableBytes(in);   
41.            // 读入多个字节到字节数组中,byteread为一次读入的字节数   
42.            while ((byteread = in.read(tempbytes)) != -1) {   
43.                System.out.write(tempbytes, 0, byteread);   
44.            }   
45.        } catch (Exception e1) {   
46.            e1.printStackTrace();   
47.        } finally {   
48.            if (in != null) {   
49.                try {   
50.                    in.close();   
51.                } catch (IOException e1) {   
52.                }   
53.            }   
54.        }   
55.    }   
56.  
57.    /**  
58.     * 以字符为单位读取文件,常用于读文本,数字等类型的文件  
59.     *   
60.     * @param fileName  
61.     *            文件名  
62.     */  
63.    public static void readFileByChars(String fileName) {   
64.        File file = new File(fileName);   
65.        Reader reader = null;   
66.        try {   
67.            System.out.println("以字符为单位读取文件内容,一次读一个字节:");   
68.            // 一次读一个字符   
69.            reader = new InputStreamReader(new FileInputStream(file));   
70.            int tempchar;   
71.            while ((tempchar = reader.read()) != -1) {   
72.                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。   
73.                // 但如果这两个字符分开显示时,会换两次行。   
74.                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。   
75.                if (((char) tempchar) != '\r') {   
76.                    System.out.print((char) tempchar);   
77.                }   
78.            }   
79.            reader.close();   
80.        } catch (Exception e) {   
81.            e.printStackTrace();   
82.        }   
83.        try {   
84.            System.out.println("以字符为单位读取文件内容,一次读多个字节:");   
85.            // 一次读多个字符   
86.            char[] tempchars = new char[30];   
87.            int charread = 0;   
88.            reader = new InputStreamReader(new FileInputStream(fileName));   
89.            // 读入多个字符到字符数组中,charread为一次读取字符数   
90.            while ((charread = reader.read(tempchars)) != -1) {   
91.                // 同样屏蔽掉\r不显示   
92.                if ((charread == tempchars.length)   
93.                        && (tempchars[tempchars.length - 1] != '\r')) {   
94.                    System.out.print(tempchars);   
95.                } else {   
96.                    for (int i = 0; i < charread; i++) {   
97.                        if (tempchars[i] == '\r') {   
98.                            continue;   
99.                        } else {   
100.                            System.out.print(tempchars[i]);   
101.                        }   
102.                    }   
103.                }   
104.            }   
105.  
106.        } catch (Exception e1) {   
107.            e1.printStackTrace();   
108.        } finally {   
109.            if (reader != null) {   
110.                try {   
111.                    reader.close();   
112.                } catch (IOException e1) {   
113.                }   
114.            }   
115.        }   
116.    }   
117.  
118.    /**  
119.     * 以行为单位读取文件,常用于读面向行的格式化文件  
120.     *   
121.     * @param fileName  
122.     *            文件名  
123.     */  
124.    public static void readFileByLines(String fileName) {   
125.        File file = new File(fileName);   
126.        BufferedReader reader = null;   
127.        try {   
128.            System.out.println("以行为单位读取文件内容,一次读一整行:");   
129.            reader = new BufferedReader(new FileReader(file));   
130.            String tempString = null;   
131.            int line = 1;   
132.            // 一次读入一行,直到读入null为文件结束   
133.            while ((tempString = reader.readLine()) != null) {   
134.                // 显示行号   
135.                System.out.println("line " + line + ": " + tempString);   
136.                line++;   
137.            }   
138.            reader.close();   
139.        } catch (IOException e) {   
140.            e.printStackTrace();   
141.        } finally {   
142.            if (reader != null) {   
143.                try {   
144.                    reader.close();   
145.                } catch (IOException e1) {   
146.                }   
147.            }   
148.        }   
149.    }   
150.  
151.    /**  
152.     * 随机读取文件内容  
153.     *   
154.     * @param fileName  
155.     *            文件名  
156.     */  
157.    public static void readFileByRandomAccess(String fileName) {   
158.        RandomAccessFile randomFile = null;   
159.        try {   
160.            System.out.println("随机读取一段文件内容:");   
161.            // 打开一个随机访问文件流,按只读方式   
162.            randomFile = new RandomAccessFile(fileName, "r");   
163.            // 文件长度,字节数   
164.            long fileLength = randomFile.length();   
165.            // 读文件的起始位置   
166.            int beginIndex = (fileLength > 4) ? 4 : 0;   
167.            // 将读文件的开始位置移到beginIndex位置。   
168.            randomFile.seek(beginIndex);   
169.            byte[] bytes = new byte[10];   
170.            int byteread = 0;   
171.            // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。   
172.            // 将一次读取的字节数赋给byteread   
173.            while ((byteread = randomFile.read(bytes)) != -1) {   
174.                System.out.write(bytes, 0, byteread);   
175.            }   
176.        } catch (IOException e) {   
177.            e.printStackTrace();   
178.        } finally {   
179.            if (randomFile != null) {   
180.                try {   
181.                    randomFile.close();   
182.                } catch (IOException e1) {   
183.                }   
184.            }   
185.        }   
186.    }   
187.  
188.    /**  
189.     * 显示输入流中还剩的字节数  
190.     *   
191.     * @param in  
192.     */  
193.    private static void showAvailableBytes(InputStream in) {   
194.        try {   
195.            System.out.println("当前字节输入流中的字节数为:" + in.available());   
196.        } catch (IOException e) {   
197.            e.printStackTrace();   
198.        }   
199.    }   
200.  
201.    public static void main(String[] args) {   
202.        String fileName = "C:/temp/newTemp.txt";   
203.        ReadFromFile.readFileByBytes(fileName);   
204.        ReadFromFile.readFileByChars(fileName);   
205.        ReadFromFile.readFileByLines(fileName);   
206.        ReadFromFile.readFileByRandomAccess(fileName);   
207.    }   
208.}  
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 {
    /**
     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
     *
     * @param fileName
     *            文件的名
     */
    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) {
                }
            }
        }
    }

    /**
     * 以字符为单位读取文件,常用于读文本,数字等类型的文件
     *
     * @param fileName
     *            文件名
     */
    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下,\r\n这两个字符在一起时,表示一个换行。
                // 但如果这两个字符分开显示时,会换两次行。
                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
                if (((char) tempchar) != '\r') {
                    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) {
                // 同样屏蔽掉\r不显示
                if ((charread == tempchars.length)
                        && (tempchars[tempchars.length - 1] != '\r')) {
                    System.out.print(tempchars);
                } else {
                    for (int i = 0; i < charread; i++) {
                        if (tempchars[i] == '\r') {
                            continue;
                        } else {
                            System.out.print(tempchars[i]);
                        }
                    }
                }
            }

        } catch (Exception e1) {
            e1.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
    }

    /**
     * 以行为单位读取文件,常用于读面向行的格式化文件
     *
     * @param fileName
     *            文件名
     */
    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) {
                }
            }
        }
    }

    /**
     * 随机读取文件内容
     *
     * @param fileName
     *            文件名
     */
    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) {
                }
            }
        }
    }

    /**
     * 显示输入流中还剩的字节数
     *
     * @param in
     */
    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:/temp/newTemp.txt";
        ReadFromFile.readFileByBytes(fileName);
        ReadFromFile.readFileByChars(fileName);
        ReadFromFile.readFileByLines(fileName);
        ReadFromFile.readFileByRandomAccess(fileName);
    }
}

二、将内容追加到文件尾部

Java代码
1.import java.io.FileWriter;   
2.import java.io.IOException;   
3.import java.io.RandomAccessFile;   
4.  
5./**  
6. * 将内容追加到文件尾部  
7. */  
8.public class AppendToFile {   
9.  
10.    /**  
11.     * A方法追加文件:使用RandomAccessFile  
12.     * @param fileName 文件名  
13.     * @param content 追加的内容  
14.     */  
15.    public static void appendMethodA(String fileName, String content) {   
16.        try {   
17.            // 打开一个随机访问文件流,按读写方式   
18.            RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");   
19.            // 文件长度,字节数   
20.            long fileLength = randomFile.length();   
21.            //将写文件指针移到文件尾。   
22.            randomFile.seek(fileLength);   
23.            randomFile.writeBytes(content);   
24.            randomFile.close();   
25.        } catch (IOException e) {   
26.            e.printStackTrace();   
27.        }   
28.    }   
29.  
30.    /**  
31.     * B方法追加文件:使用FileWriter  
32.     * @param fileName  
33.     * @param content  
34.     */  
35.    public static void appendMethodB(String fileName, String content) {   
36.        try {   
37.            //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件   
38.            FileWriter writer = new FileWriter(fileName, true);   
39.            writer.write(content);   
40.            writer.close();   
41.        } catch (IOException e) {   
42.            e.printStackTrace();   
43.        }   
44.    }   
45.  
46.    public static void main(String[] args) {   
47.        String fileName = "C:/temp/newTemp.txt";   
48.        String content = "new append!";   
49.        //按方法A追加文件   
50.        AppendToFile.appendMethodA(fileName, content);   
51.        AppendToFile.appendMethodA(fileName, "append end. \n");   
52.        //显示文件内容   
53.        ReadFromFile.readFileByLines(fileName);   
54.        //按方法B追加文件   
55.        AppendToFile.appendMethodB(fileName, content);   
56.        AppendToFile.appendMethodB(fileName, "append end. \n");   
57.        //显示文件内容   
58.        ReadFromFile.readFileByLines(fileName);   
59.    }   
60.} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值