最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
JAVA中读取文件(二进制,字符)内容的几种方法总结
时间:2017-03-28 编辑:简简单单 来源:一聚教程网
JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代码,需要的可以直接复制使用
代码如下 | 复制代码 |
publicclassReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ publicstaticvoidreadFileByBytes(String fileName) { File file =newFile(fileName); InputStream in =null; try{ System.out.println("以字节为单位读取文件内容,一次读一个字节:"); // 一次读一个字节 in =newFileInputStream(file); inttempbyte; while((tempbyte = in.read()) != -1) { System.out.write(tempbyte); } in.close(); }catch(IOException e) { e.printStackTrace(); return; } try{ System.out.println("以字节为单位读取文件内容,一次读多个字节:"); // 一次读多个字节 byte[] tempbytes =newbyte[100]; intbyteread =0; in =newFileInputStream(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) { } } } }
/** * 以字符为单位读取文件,常用于读文本,数字等类型的文件 */ publicstaticvoidreadFileByChars(String fileName) { File file =newFile(fileName); Reader reader =null; try{ System.out.println("以字符为单位读取文件内容,一次读一个字节:"); // 一次读一个字符 reader =newInputStreamReader(newFileInputStream(file)); inttempchar; 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 =newchar[30]; intcharread =0; reader =newInputStreamReader(newFileInputStream(fileName)); // 读入多个字符到字符数组中,charread为一次读取字符数 while((charread = reader.read(tempchars)) != -1) { // 同样屏蔽掉\r不显示 if((charread == tempchars.length) && (tempchars[tempchars.length -1] !='\r')) { System.out.print(tempchars); }else{ for(inti =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) { } } } }
/** * 以行为单位读取文件,常用于读面向行的格式化文件 */ publicstaticvoidreadFileByLines(String fileName) { File file =newFile(fileName); BufferedReader reader =null; try{ System.out.println("以行为单位读取文件内容,一次读一整行:"); reader =newBufferedReader(newFileReader(file)); String tempString =null; intline =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) { } } } }
/** * 随机读取文件内容 */ publicstaticvoidreadFileByRandomAccess(String fileName) { RandomAccessFile randomFile =null; try{ System.out.println("随机读取一段文件内容:"); // 打开一个随机访问文件流,按只读方式 randomFile =newRandomAccessFile(fileName,"r"); // 文件长度,字节数 longfileLength = randomFile.length(); // 读文件的起始位置 intbeginIndex = (fileLength >4) ?4:0; // 将读文件的开始位置移到beginIndex位置。 randomFile.seek(beginIndex); byte[] bytes =newbyte[10]; intbyteread =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) { } } } }
/** * 显示输入流中还剩的字节数 */ privatestaticvoidshowAvailableBytes(InputStream in) { try{ System.out.println("当前字节输入流中的字节数为:"+ in.available()); }catch(IOException e) { e.printStackTrace(); } }
publicstaticvoidmain(String[] args) { String fileName ="C:/temp/newTemp.txt"; ReadFromFile.readFileByBytes(fileName); ReadFromFile.readFileByChars(fileName); ReadFromFile.readFileByLines(fileName); ReadFromFile.readFileByRandomAccess(fileName); } } |
-
上一个: Java获取文件的类型和扩展名的实现方法
-
下一个: Java 编程之IO流资料详细整理