导航:首页 > 文件教程 > java读取文件效率

java读取文件效率

发布时间:2025-01-20 14:04:51

A. java读取文件和读取数据库的效率哪个高一些

顺序读取的话文件快。检索的话数据库高。
不只是java,所有语言都有这个特点。
在2000年左右,国内还争论过使用数据库还是文件来保存数据。现在已经没有争论了。数据存储就是为了用的。

B. Java 读取大文件有什么可以优化的吗

优化一:采用内存硬盘(RamDisk)

内存硬盘可以极大地提高文件的读写速度,行情的读写是应用内存硬盘的绝好情况:

1,可以把行情小站的行情文件地址配置在内存硬盘上。这样可以加速行情小站写文件的速度。

2,本系统再从内存硬盘读取,又可以加快读取速度。

3,内存硬盘掉电后会丢失文件,这里基本不在乎这个缺点,因为行情文件本来就是临时的,如果有持久化的需要,大部分内存硬盘也支持持久化的功能。

优化二:采用JNotify,用通知替代轮询

由于行情小站会不断的更新行情dbf文件,系统需要探测到一旦行情文件被更新,就立即读取。传统的策略是不断轮询行情文件的状态,如果发现行情文件的最后修改日期(或者再加上文件大小)改变时,就认为文件被更新。但是这种方式既低效,时延又高且不稳定。假设即使把轮询时间设置为10ms一次(这意味着1秒钟就要轮询100次), 平均时延也要5ms。

JNotify库支持Windows,Linux和MacOS,允许监视一个文件夹,当这个文件夹下的文件被增删改时,发起回调通知。代码示例如下:

部署时,需要将本地库放在执行根目录下,或者用-Djava.library.path=/native/library/path指定本地库的位置。

采用JNotify,用(基于操作系统的)通知而不是轮询,可以非常快地发现文件被更新,根据测试时间<1ms (我觉得应该远小于1ms,但是由于文件修改时间单位是毫秒,没办法更精确的测量)。

C. java读取一个文件夹内的文本,文本过多时速度会很慢,什么技术或方法能加快读取

优化取决于你的需求,你动不动就一定法力在阅读完所有的文字,或者你可以把名称的文字,因为法律,那么该指数将稍微打开。

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

方式一

/**
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
* 当然也是可以读字符串的。
*/
/* 貌似是说网络环境中比较复杂,每次传过来的字符是定长的,用这种方式?*/
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();
}

阅读全文

与java读取文件效率相关的资料

热点内容
max发光材质教程 浏览:675
兰州linux培训 浏览:818
手机qq怎样查看帐号和密码 浏览:142
word2010无法保存文件 浏览:743
ppt里怎样添加视频文件在哪里 浏览:405
如何把隐藏在电脑中的文件找出来 浏览:574
ios照片分类app 浏览:65
excel如何调用exe文件 浏览:8
苹果按下主屏幕以升级 浏览:461
win10尘埃3双击没反应 浏览:160
如何一个人开发app 浏览:864
数据库中实体的完整性如何保持 浏览:831
哪个二手车网站便宜啊 浏览:489
济南地铁app买了票怎么退 浏览:424
食用油行情看哪个app 浏览:776
怎么移动迅雷下载到一半的文件 浏览:803
哪些红头文件的抬头下面是双红线 浏览:638
炒股app有哪个 浏览:108
汽车钥匙编程器哪个好 浏览:688
误删除文件怎么恢复 浏览:885

友情链接