JAVA中几种读取文件字符串的效率哪个比较高

JAVA中几种读取文件字符串的效率哪个比较高,第1张

方式

/**

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

* 当然也是可以读字符串的。

*/

/* 貌似是说网络环境中比较复杂,每次传过来的字符是定长的,用这种方式?*/

public String readString1()

{

try

{

//FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。

FileInputStream inStream=this.openFileInput(FILE_NAME)

ByteArrayOutputStream bos = new ByteArrayOutputStream()

byte[] buffer=new byte[1024]

int length=-1

while( (length = inStream.read(buffer) != -1)

{

bos.write(buffer,0,length)

// .write方法 SDK 的解释是 Writes count bytes from the byte array buffer starting at offset index to this stream.

// 当流关闭以后内容依然存在

}

bos.close()

inStream.close()

return bos.toString()

// 为什么不一次性把buffer得大小取出来呢?为什么还要写入到bos中呢? return new(buffer,"UTF-8") 不更好么?

// return new String(bos.toByteArray(),"UTF-8")

}

}

方式二

// 有人说了 FileReader 读字符串更好,那么就用FileReader吧

// 每次读一个是不是效率有点低了?

private static String readString2()

{

StringBuffer str=new StringBuffer("")

File file=new File(FILE_IN)

try {

FileReader fr=new FileReader(file)

int ch = 0

while((ch = fr.read())!=-1 )

{

System.out.print((char)ch+" ")

}

fr.close()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

System.out.println("File reader出错")

}

return str.toString()

}

方式三

/*按字节读取字符串*/

/* 个人感觉最好的方式,(一次读完)读字节就读字节吧,读完转码一次不就好了*/

private static String readString3()

{

String str=""

File file=new File(FILE_IN)

try {

FileInputStream in=new FileInputStream(file)

// size 为字串的长度 ,这里一次性读完

int size=in.available()

byte[] buffer=new byte[size]

in.read(buffer)

in.close()

str=new String(buffer,"GB2312")

} catch (IOException e) {

// TODO Auto-generated catch block

return null

e.printStackTrace()

}

return str

}

/*InputStreamReader+BufferedReader读取字符串 , InputStreamReader类是从字节流到字符流的桥梁*/

/* 按行读对于要处理的格式化数据是一种读取的好方式 */

private static String readString4()

{

int len=0

StringBuffer str=new StringBuffer("")

File file=new File(FILE_IN)

try {

FileInputStream is=new FileInputStream(file)

InputStreamReader isr= new InputStreamReader(is)

BufferedReader in= new BufferedReader(isr)

String line=null

while( (line=in.readLine())!=null )

{

if(len != 0) // 处理换行符的问题

{

str.append("\r\n"+line)

}

else

{

str.append(line)

}

len++

}

in.close()

is.close()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

return str.toString()

}

import java.util.*

import java.io.*

class Main{

static public void main(String[] str)throws Exception{

File f=new File("1.txt")

write(f,1024*1024)//写文件

read(f)

}//main

static public void write(File f,long length)throws Exception{

long begin=System.currentTimeMillis()

PrintWriter p=new PrintWriter(f)

for(long l=0l<lengthl++){

char c=(char)(int)(Math.random()*70+40)

p.print(c)

}

long end=System.currentTimeMillis()

System.out.println("Write "+length+"char OK! Time:"+(end-begin))

}

static public void read(File f)throws Exception{

long begin=System.currentTimeMillis()

Scanner s=new Scanner(f)

while(s.hasNext()){

s.next()

}

long end=System.currentTimeMillis()

System.out.println("Read OK!Time:"+(end-begin))

}

}//class


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11609741.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存