流和文件:保存和读取字节级数据

 
保存和读取字节级数据:


 1//写100000个随机数到一个文件中,非缓冲技术,同进测试操作时间
 2import java.io.*;
 3public class WriteUnbufferedTest
 4{
 5    public static void main(String[] args) 
 6    {
 7        try{
 8            long start=System.currentTimeMillis();  //当前时间
 9            FileOutputStream fsout=new FileOutputStream("sample.dat");
10            System.out.println("start="+start);
11            DataOutputStream out=new DataOutputStream(fsout);
12            for(int i=0; i<100000; i++)
13                out.writeDouble(Math.random());
14            out.close();
15            long stop=System.currentTimeMillis();
16            System.out.println("stop="+stop);
17            System.out.println("Time passed: "+(stop-start));
18            }
catch(IOException ioe){
19                System.out.println(ioe);
20            }

21    }

22}

23



 1//写100000个随机数到一个文件中,缓冲技术,同进测试操作时间
 2import java.io.*;
 3public class WriteBufferedTest
 4{
 5    public static void main(String[] args) 
 6    {
 7        try{
 8            long start=System.currentTimeMillis();  //当前时间
 9            System.out.println("start="+start);
10            FileOutputStream fsout=new FileOutputStream("sample.dat");
11            BufferedOutputStream bfsout=new BufferedOutputStream(fsout);
12            DataOutputStream out=new DataOutputStream(bfsout);
13            for(int i=0; i<100000; i++)
14                out.writeDouble(Math.random());
15            out.close();
16            long stop=System.currentTimeMillis();
17            System.out.println("stop="+stop);
18            System.out.println("Time passed: "+(stop-start));
19            }
catch(IOException ioe){
20                System.out.println(ioe);
21            }

22    }

23}

24


 1//非缓冲技术,读文件
 2import java.io.*;
 3public class ReadUnbufferedTest  
 4{
 5    public static void main(String[] args) 
 6    {
 7        double sum=0;
 8        try{
 9            long start=System.currentTimeMillis();
10            System.out.println("start="+start);
11            FileInputStream fsin=new FileInputStream("sample.dat");
12            DataInputStream in=new DataInputStream(fsin);
13            for(int i=0; i<100000; i++)
14                sum+=in.readDouble();
15            in.close();
16            long stop=System.currentTimeMillis();
17            System.out.println("stop="+stop);
18            System.out.println("Average: "+(sum/100000));
19            System.out.println("Time passed: "+(stop-start));
20            }
catch(IOException ioe){
21                System.out.println(ioe);
22            }

23    }

24}

25


 1//缓冲技术,读文件
 2import java.io.*;
 3public class ReadBufferedTest  
 4{
 5    public static void main(String[] args) 
 6    {
 7        double sum=0;
 8        try{
 9            long start=System.currentTimeMillis();
10            System.out.println("start="+start);
11            FileInputStream fsin=new FileInputStream("sample.dat");
12            BufferedInputStream bfsin=new BufferedInputStream(fsin);
13            DataInputStream in=new DataInputStream(bfsin);
14            for(int i=0; i<100000; i++)
15                sum+=in.readDouble();
16            in.close();
17            long stop=System.currentTimeMillis();
18            System.out.println("stop="+stop);
19            System.out.println("Average: "+(sum/100000));
20            System.out.println("Time passed: "+(stop-start));
21            }
catch(IOException ioe){
22                System.out.println(ioe);
23            }

24    }

25}

26


 1//创建简单程序,存储数据到sample.dat文件中
 2import java.io.*;
 3public class SimpleOutputTest  
 4{
 5    public static void main(String[] args) 
 6    {
 7        double pi=3.1415;
 8        int i=10;
 9        boolean okay=true;
10        char ch='J';
11        String s="Java C Pascal";
12        try{
13            FileOutputStream fsout=new FileOutputStream("sample.dat");
14            DataOutputStream out=new DataOutputStream(fsout);
15            out.writeDouble(pi);
16            out.writeInt(i);
17            out.writeBoolean(okay);
18            out.writeChar(ch);
19            out.writeUTF(s);
20            out.close();
21            }
catch(FileNotFoundException fe){
22                System.err.println(fe);
23            }
catch(IOException ioe){
24                System.out.println(ioe);
25            }

26    }

27}

28

 

 1//创建简单程序读取数据
 2import java.io.*;
 3public class SimpleInputTest  
 4{
 5    public static void main(String[] args) 
 6    {
 7        try{
 8            FileInputStream fsin=new FileInputStream("sample.dat");
 9            DataInputStream in=new DataInputStream(fsin);
10            double pi=in.readDouble();
11            int i=in.readInt();
12            boolean okay=in.readBoolean();
13            char ch=in.readChar();
14            String s=in.readUTF();
15            in.close();
16            System.out.println("pi="+pi+", i="+i);
17            System.out.println("okay="+okay+", ch="+ch);
18            System.out.println("s="+s);
19            }
catch(FileNotFoundException fnfe){
20                System.err.println(fnfe);
21            }
catch(IOException ioe){
22                System.err.println(ioe);
23            }

24    }

25}

26

 

 1//创建SafeCopy程序来复制文件
 2//这个程序可以在命令中接收源文件名和目标文件名
 3//只当目标文件不存在时,程序才将源文件复制到现在要创建的目标文件中去
 4//即不覆盖原来已存在的文件
 5import java.io.*;
 6public class SafeCopy 
 7{
 8    public static void copyFile(DataInputStream in, DataOutputStream out) throws IOException
 9    {
10        try{
11            while(true)
12                out.writeByte(in.readByte());
13            }
catch(EOFException eof){
14                return;
15            }

16    }

17    public static void main(String[] args) 
18    {
19
20        String inFileName="E:\\101.asm", outFileName="E:\\500.txt";
21        File inFile=new File(inFileName);
22        File outFile=new File(outFileName);
23        if(!inFile.exists())
24            System.out.println(inFileName+"does not exist.");
25        else if(outFile.exists())
26            System.out.println(outFileName+"already exist.");
27        else{
28            try{
29                FileInputStream fsin=new FileInputStream(inFileName);
30                BufferedInputStream bfsin=new BufferedInputStream(fsin);
31                DataInputStream in=new DataInputStream(bfsin);
32                FileOutputStream fsout=new FileOutputStream(outFileName);
33                BufferedOutputStream bfsout=new BufferedOutputStream(fsout);
34                DataOutputStream out=new DataOutputStream(bfsout);
35                copyFile(in,out);
36                in.close();
37                out.close();
38                }
catch(IOException ioe){
39                    System.out.println(ioe);
40                }

41             }

42       }

43}

44

 

 1//用户首先输入需要复制文件的名称和路径,然后再输入新的文件名和路径,完成后将旧文件和新文件内容显示在屏幕上
 2import java.io.*;
 3public class txcopy  
 4{
 5    public static void main(String[] args) 
 6    {
 7        byte[] b1=new byte[255];
 8        byte[] b2=new byte[255];
 9        byte[] b3=new byte[2056];
10        byte[] b4=new byte[2056];
11        int a=0;
12        int b=0;
13        try{
14            System.out.println("请输入源文件名称: \n");
15            a=System.in.read(b1,0,255);
16            System.out.println("\n请输入目的文件名称: \n");
17            b=System.in.read(b2,0,255);
18            String sourceName=new String(b1,0,0,a-2);//把一个字节型数组转换成字符串数组
19            String desName=new String(b2,0,0,b-2);
20            System.out.println(sourceName.length());
21            FileInputStream fileInput=new FileInputStream(sourceName);
22            int bytes1=fileInput.read(b3,0,2056);
23            String sourceFile=new String(b3,0,0,bytes1);
24            FileOutputStream FileOutput=new FileOutputStream(desName);
25            FileOutput.write(b3,0,bytes1);
26            fileInput=new FileInputStream(desName);
27            int bytes2=fileInput.read(b4,0,2056);
28            String desFile=new String(b4,0,0,bytes2);
29            System.out.println("\n源文件内容为: \n");
30            System.out.println(sourceFile);
31            System.out.println("\n目的文件内容: \n");
32            System.out.println(desFile);
33            }
catch(Exception e){
34                System.out.println(e.toString());
35            }

36    }

37}

38

 

 1//写一个程序显示在程序的命令中指定的目录中所有的文件和目录
 2//包括文件大小及是文件还是目录类型
 3//按字母顺序排序显示,并且目录在文件之前显示
 4import java.io.*;
 5import java.util.*;
 6import java.io.File;
 7class FileNameSorter implements Comparator
 8{
 9    public int compare(Object o1, Object o2)
10    {
11        File f1=(File)o1;
12        File f2=(File)o2;
13        if(f1.isDirectory())
14        {
15            if(f2.isDirectory())
16                return f1.getName().compareTo(f2.getName());
17            else
18                return -1;
19        }

20        else
21        {
22            if(f2.isDirectory())
23                return 1;
24            else
25                return f1.getName().compareTo(f2.getName());
26        }

27    }

28    public boolean equals(Object o1, Object o2)
29    {
30        return ((File)o1).getName().equals(((File)o2).getName());
31    }

32}

33public class Dir
34{
35    private static void showDirInfo(File list[])
36    {
37        Arrays.sort(list, new FileNameSorter());
38        for(int i=0; i<list.length; i++)
39        {
40            if(list[i].isDirectory())
41                System.out.print("DIRECTORY");
42            else
43                System.out.print(list[i].length()+"bytes");
44            System.out.println("\t"+list[i]);
45        }

46    }

47    public static void main(String[] args) 
48    {
49    //    File path=new File(System.getProperty("user.dir"));//用户没有提供目录,则使用当前目录
50        File path=new File("D:\\j2sdk1.4.2");
51        if(args.length>0)
52            path=new File(args[0]);
53        if(path.exists()&&path.isDirectory())
54            showDirInfo(path.listFiles());
55        else
56            System.out.println("path not found or not directory");
57    }

58}

59



 

posted on 2005-11-16 16:46  newzpflying  阅读(1416)  评论(0)    收藏  举报