①编写一个程序,实现文件的复制。②写一个加密程序,对文件1.txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。③ 编写一个应用程序,向数据文件out.dat中输入100个1000以内的随机整

这篇博客介绍了三个程序:1) 实现文件复制,将filecopy.in复制为filecopy.out;2) 设计一个加密程序,对1.txt使用输入的密钥加密并输出到2.txt;3) 编写应用,生成包含100个随机整数的out.dat文件,读取排序后输出到控制台。涉及文件I/O、加密算法及整数排序。

【问题描述】编写一个程序,实现文件的复制。程序的任务是将当前目录下filecopy.in文件复制成filecopy.out。
【输入文件】输入文件为当前目录下的filecopy.in。其内容由任意文本构成。
【输出文件】输出文件为当前目录下的filecopy.out。
【样例输入】若输入filecopy.in文件内容如下:
hello world1!#
hello world2!#
hello world3!#
hello world4!#
【样例输出】输出文件filecopy.out内容为:
hello world1!#
hello world2!#
hello world3!#
hello world4!#
【评分标准】该题要求输出文件与输入文件内容一致。如果你的输出文件正确,则该测试点得满分,否则该测试点得分为0。
【样例说明】输入文件为当前目录下的filecopy.in,输出文件为当前目录下的filecopy.out。

package ch008;

import java.io.*;

public class FileCopyDemo {
    public static void main(String[] args) {
        BufferedWriter bw=null;
        BufferedReader br=null;
        try {
            br=new BufferedReader(new FileReader("filecopy.in"));
            bw=new BufferedWriter(new FileWriter("filecopy.out"));
            String line=System.getProperty("line.separator");
            String output=null;
            while((output=br.readLine())!=null){
                bw.write(output+line);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }  finally {
            if(br!=null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(bw!=null){
                try {
                    bw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        try {
            br=new BufferedReader(new FileReader("filecopy.out"));
            String output=null;
            while((output=br.readLine())!=null){
                System.out.println(output);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(br!=null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }
}

1) 写一个加密程序,对文件1.txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。采用下面的简单加密算法:
1)读入密钥的key是一个字符串;
2)明文中字符c的密文为c^key[i];
3)循环使用key中的各个字符,直至处理完全部明文。如果key为空,则不作加密
4)解密时,用同一个key重新加密密文,就可以得到明文。
【输入形式】
从标准输入流中读入一个密钥串,使用其对当前目录下的文件1.txt进行加密。
【输出形式】
将文件密文输出到文件2.txt
【输入样例】
输入密钥为:
test
1.txt文件内容为
3321

5678

【输出样例】
输出密文到2.txt文件中。

GVAE

ASDL

【样例说明】
从标准输入中读入一个密钥对文件1.txt加密,并将文件密文输出到2txt文件中。
提示:可将得到的密文文件2.txt拷贝到1.txt文件中,并用原密钥对该文件再次加密,若得到的密文文件与原始文件相同,则说明程序算法正确。

package ch008;

import java.io.*;
import java.util.Scanner;

public class FileEncryption {
    public static void main(String[] args) {

        BufferedWriter bw=null;
        Scanner sc=new Scanner(System.in);
        String keys=sc.next();
        //String ming=null;
        BufferedReader br=null;
        try {
            br=new BufferedReader(new FileReader("1.txt"));
            bw=new BufferedWriter(new FileWriter("2.txt"));
            String m=null;
            while((m=br.readLine())!=null){
                for(int i=0;i<keys.length();i++){
                    bw.write((char)(m.charAt(i)^keys.charAt(i)));
                }
                bw.newLine();
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(br!=null){
                try {
                    br.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if(bw!=null){
                try {
                    bw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
       
    }
}
  1. 编写一个应用程序,向数据文件out.dat中输入100个1000以内的随机整数,随后并读取这些整数放入数组,并排序输出到控制台 (要求使用DataInputStream和DataOutputStream中的readInt()方法和writeInt()方法)
package ch008;

import java.io.*;

public class DataStreamDemo {
    public static void main(String[] args) {
        DataInputStream di=null;
        DataOutputStream dl=null;
        int x=0;
        try {
            di=new DataInputStream(new FileInputStream("out.dat"));
            dl=new DataOutputStream(new FileOutputStream("out.dat"));
            for(int i=0;i<100;i++){
                dl.writeInt ((int) (Math.random()*1000));
            }
            while((x=di.readInt())!=0){
                System.out.print(x+" ");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值