/*
* 2011 09 01 题目要求是实现随机写文件中10个double数据,然后格式化输出
* 简单设计了一下,使用了 java.text.DecimalFormat中的pattern方法来
* 构建格式,其实跟regex的写法类似,不过要简单一点。
* Younger.Shen 申延刚
* younger.x.shen@gmail.com
* blog.csdn.net/hack2me
0
一位数字,这一位缺失显示为0。用来补零
#
一位数字, 这一位缺失就不显示
.
小数点,不用多说了吧
,
千位分隔符
E
科学计数法
%
百分比
*/
package com.youngershen.io.test;
import java.io.*;
import java.util.*;
import java.text.*;
public class RandomAccessFileDemo {
private RandomAccessFile f = null;
private ArrayList<Double> d = new ArrayList<Double>();
private File file = null;
public RandomAccessFileDemo(String name) {
file = new File(name);
try {
f = new RandomAccessFile(file,"rw");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
operate();
readOut();
}
public void operate(){
for(int i=0;i<10;i++){
try {
f.writeDouble(Math.random()*10);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
f.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void patternPrint(String pattern, double x) {
DecimalFormat df = new DecimalFormat(pattern);
System.out.println(df.format(x));
}
public void readOut(){
try {
f = new RandomAccessFile(file,"r") ;
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for(int i=0;i<10;i++){
try {
f.seek(i*8);
d.add(f.readDouble());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int i=0;i<10;i++){
patternPrint("#.###" , d.get(i));
}
try{
f.close();
}catch(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new RandomAccessFileDemo("./sss.txt");
System.out.println("hello");
}
}
2011-09-01--RandomAccessFile 随机读取文件
最新推荐文章于 2022-03-26 14:03:43 发布