几种读取文件的方法.docx

上传人:b****6 文档编号:7749139 上传时间:2023-01-26 格式:DOCX 页数:8 大小:15.88KB
下载 相关 举报
几种读取文件的方法.docx_第1页
第1页 / 共8页
几种读取文件的方法.docx_第2页
第2页 / 共8页
几种读取文件的方法.docx_第3页
第3页 / 共8页
几种读取文件的方法.docx_第4页
第4页 / 共8页
几种读取文件的方法.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

几种读取文件的方法.docx

《几种读取文件的方法.docx》由会员分享,可在线阅读,更多相关《几种读取文件的方法.docx(8页珍藏版)》请在冰豆网上搜索。

几种读取文件的方法.docx

几种读取文件的方法

几种读取文件的方法

publicclassReadFromFile{

/**

*以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。

*/

publicstaticvoidreadFileByBytes(StringfileName){

Filefile=newFile(fileName);

InputStreamin=null;

try{

System.out.println("以字节为单位读取文件内容,一次读一个字节:

");

//一次读一个字节

in=newFileInputStream(file);

inttempbyte;

while((tempbyte=in.read())!

=-1){

System.out.write(tempbyte);

}

in.close();

}catch(IOExceptione){

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(Exceptione1){

e1.printStackTrace();

}finally{

if(in!

=null){

try{

in.close();

}catch(IOExceptione1){

}

}

}

}

/**

*以字符为单位读取文件,常用于读文本,数字等类型的文件

*/

publicstaticvoidreadFileByChars(StringfileName){

Filefile=newFile(fileName);

Readerreader=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(Exceptione){

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

if(tempchars[i]=='\r'){

continue;

}else{

System.out.print(tempchars[i]);

}

}

}

}

}catch(Exceptione1){

e1.printStackTrace();

}finally{

if(reader!

=null){

try{

reader.close();

}catch(IOExceptione1){

}

}

}

}

/**

*以行为单位读取文件,常用于读面向行的格式化文件

*/

publicstaticvoidreadFileByLines(StringfileName){

Filefile=newFile(fileName);

BufferedReaderreader=null;

try{

System.out.println("以行为单位读取文件内容,一次读一整行:

");

reader=newBufferedReader(newFileReader(file));

StringtempString=null;

intline=1;

//一次读入一行,直到读入null为文件结束

while((tempString=reader.readLine())!

=null){

//显示行号

System.out.println("line"+line+":

"+tempString);

line++;

}

reader.close();

}catch(IOExceptione){

e.printStackTrace();

}finally{

if(reader!

=null){

try{

reader.close();

}catch(IOExceptione1){

}

}

}

}

/**

*随机读取文件内容

*/

publicstaticvoidreadFileByRandomAccess(StringfileName){

RandomAccessFilerandomFile=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(IOExceptione){

e.printStackTrace();

}finally{

if(randomFile!

=null){

try{

randomFile.close();

}catch(IOExceptione1){

}

}

}

}

/**

*显示输入流中还剩的字节数

*/

privatestaticvoidshowAvailableBytes(InputStreamin){

try{

System.out.println("当前字节输入流中的字节数为:

"+in.available());

}catch(IOExceptione){

e.printStackTrace();

}

}

publicstaticvoidmain(String[]args){

StringfileName="C:

/temp/newTemp.txt";

ReadFromFile.readFileByBytes(fileName);

ReadFromFile.readFileByChars(fileName);

ReadFromFile.readFileByLines(fileName);

ReadFromFile.readFileByRandomAccess(fileName);

}

}

publicclassAppendToFile{

/**

*A方法追加文件:

使用RandomAccessFile

*/

publicstaticvoidappendMethodA(StringfileName,Stringcontent){

try{

//打开一个随机访问文件流,按读写方式

RandomAccessFilerandomFile=newRandomAccessFile(fileName,"rw");

//文件长度,字节数

longfileLength=randomFile.length();

//将写文件指针移到文件尾。

randomFile.seek(fileLength);

randomFile.writeBytes(content);

randomFile.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

/**

*B方法追加文件:

使用FileWriter

*/

publicstaticvoidappendMethodB(StringfileName,Stringcontent){

try{

//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件

FileWriterwriter=newFileWriter(fileName,true);

writer.write(content);

writer.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

publicstaticvoidmain(String[]args){

StringfileName="C:

/temp/newTemp.txt";

Stringcontent="newappend!

";

//按方法A追加文件

AppendToFile.appendMethodA(fileName,content);

AppendToFile.appendMethodA(fileName,"appendend.\n");

//显示文件内容

ReadFromFile.readFileByLines(fileName);

//按方法B追加文件

AppendToFile.appendMethodB(fileName,content);

AppendToFile.appendMethodB(fileName,"appendend.\n");

//显示文件内容

ReadFromFile.readFileByLines(fileName);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1