byte的方式读文件

    1. try{
    2. File fil = new File("D:/tmp/a.txt");
    3. FileInputStream fis = new FileInputStream(fil);
    4. if(!fil.exists()){
    5. fil.createNewFile();
    6. }
    7. b=fis.read();
    8. if(b<0)b=0;
    9. fis.close();
    10. }catch (IOException e){
    11. e.printStackTrace();
    12. }

    byte方式写文件

    1. try{
    2. FileOutputStream fos = null;
    3. File file = new File("D:/tmp/a.txt");
    4. fos = new FileOutputStream(file);
    5. fos.write(b);
    6. fos.close();
    7. }catch (IOException e){
    8. e.printStackTrace();
    9. }

    更多读文件

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

    更多写文件

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