编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad

1.编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad

package copy;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class CopyTest {
           public static void main(String[] args) throws Exception {
            File file=new File("D:\\java");
            //判断目录是否存在
            if(!(file.exists()&&file.isDirectory())){
                throw new Exception("目录不存在");
            }
            // 找到文件夹下面的 .java 文件
            File[] files=file.listFiles(new FilenameFilter() {
                public boolean accept(File dir, String name) {
                    // TODO Auto-generated method stub
                    return name.endsWith(".java");
                }
            });
            System.out.println(files.length);
            // 复制文件
            // 找到目标目录
            File targetfile=new File("D:\\jad");
            //判断目录是否存在,不存在创建
            if(!(targetfile.exists()&&targetfile.isDirectory())){
                targetfile.mkdirs();
            }
            // 替换文件名字
            for(File f:files){
//                1.使用文件流实现文件复制
                String targetFilename=f.getName().replace(".java", ".jad");
//                FileInputStream in=new FileInputStream(f);
//                FileOutputStream out=new FileOutputStream(new File(targetfile,targetFilename));
//                copy(in,out);
//                2.使用缓冲流加快读写效率
                BufferedInputStream bis=new BufferedInputStream(new FileInputStream(f));
                BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File(targetfile,targetFilename)));
                CopyDemo2(bis,bos);
            }

        }

           /**
            * 使用文件流实现文件复制
            * @author smy
            * @throws Exception
            */
        public static void copy(InputStream in,OutputStream out) throws Exception{
            byte[] data = new byte[1024*10];
            int len = -1;
            while((len = in.read(data))!=-1){
                out.write(data,0,len);
            }    

            in.close();
            out.close();
        }

        /**
         * 使用缓冲流加快读写效率
         *
         * 缓冲流是一对高级流,使用它们可以提高读
         * 写效率。
         *
         * 高级流:高级流用来处理其他流,高级流不能
         * 独立存在,因为没有意义,使用高级流的目的
         * 是为了解决某些读写操作的复杂度。简化我们
         * 的读写操作。
         *
         * 低级流:数据源明确,真实负责读写数据的流。
         *
         * 读写操作一定需要低级流,但不一定非要使用
         * 高级流。
         * @author SMY
         * @throws Exception
         */
        public static void CopyDemo2(InputStream bis,OutputStream bos) throws Exception{
            int d = -1;
            /*
             * 缓冲流内部维护了一个字节数组作为
             * 缓冲。当我们调用read()方法读取一个
             * 字节时,缓冲流会一次性读取若干字节
             * 并存入缓冲区,然后返回第一个字节,当
             * 我们再次调用read方法读取一个字节时,
             * 它会立即将缓冲区中第二个字节返回,
             * 直到所有字节都返回后,才会再次发生
             * 实际的读取操作,读取一组字节放入缓冲
             * 区。
             * 所以本质上还是通过一次读取若干字节,
             * 减少读取次数提高的读取效率。
             */
            while((d=bis.read())!=-1){
                bos.write(d);
            }
            bis.close();
            bos.close();
        }

}

原文地址:https://www.cnblogs.com/satisfysmy/p/8955776.html

时间: 2024-08-15 10:55:57

编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad的相关文章

Java练习 份证号码组成规则是前4位是代表省份和地区 编写一个程序,通过身份证号码判断某人是否是武汉人以及其性别。

package com.swift; public class ID_Where_Male_Test { public static void main(String[] args) { /* * 中华人民共和国公民身份证号码组成规则是前4位是代表省份和地区(例如4201代表湖北省武汉市), * 第17位代表性别(奇数代表男性).编写一个程序,通过身份证号码判断某人是否是武汉人以及其性别. */ String str="420103199801010312"; if(str.subst

编写一个程序,指定一个文件夹,能自动计算出其总容量

package wenjianyuliu;//编写一个程序,指定一个文件夹,能自动计算出其总容量import java.io.File;import java.util.ArrayList; public class Size {   static long size=0; private static ArrayList<String> filelist=new ArrayList<String>(); public static void main(String[] args)

编写一个程序把较长的输入行“折”成短一些的两行或多行

/*******************************************编写一个程序把较长的输入行"折"成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格符之后.要保证程序能够智能地处理输入行很长以及在指定的列前没有空格或制表符的情况.*************************************************/#include <stdio.h>#define MAXCOL 10#define TABINC 8cha

编写一个程序,统计输入字符串中每一个小写英文字母出现的次数

import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/1 22:18 * @description: * @version:$ */ /*编写一个程序,统计输入字符串中每一个小写英文字母出现的次数*/ public class page0901 { public static void main(String[] args) { /*首先,输入一段字符串作为字符数组*/ System.out.p

编写一个程序找出100~999之间所有的水仙花数

如果一个3位数等于其各位的立方和,称该数为水仙花数. 如,所以407是一个水仙花数,编写一个程序找出100~999之间所有的水仙花数. 1 #include<stdio.h> 2 #include<stdlib.h> 3 //判断水仙花数,是则返回1 4 int isNarcissus(int n); 5 6 int main() 7 { 8 int i; 9 for(i = 100; i < 1000; i++) 10 if(isNarcissus(i)) 11 print

编写一个程序实现strcpy函数的功能

1 #include <stdio.h> 2 #include <string.h> 3 #define N 5 4 5 6 char *mycpy(char *s1, char *s2) 7 { 8 //数组型 9 /* int i; 10 while(s2[i] != '\0') { 11 s1[i] = s2[i]; 12 i++; 13 } 14 s1[i] = '\0'; 15 return s1; */ 16 //指针型 17 char *p = s1; 18 whil

编写一个程序实现strcmp函数的功能

写自己的strcat函数------→mycmp 1 #include <stdio.h> 2 #include <string.h> 3 #define N 5 4 5 int mycmp(char *s1, char *s2) 6 { 7 //数组型 8 /* int i = 0; 9 while(s1[i] == s2[i] && s1[i] != '\0') { 10 i++; 11 } 12 13 return s1[i] - s2[i]; */ 14 /

c语言:编写一个程序,可以直接接收键盘字符

编写一个程序,可以直接接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出. 程序1: #include <stdio.h> int main() { int t = 0; printf("请输入一个字符:"); t = getchar(); if (t >= 'a'&&t <= 'z') { putchar(t-32); } else if(t >= 'A'&&t 

编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。

编写一个程序,从标准输入读取几行输入.每行输入都要打印到标准输出上,前面加上行号. 在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制. #include <stdio.h> #include <stdlib.h> int main() { char ch = '0'; int n = 1; int flag = 1; while (1) { printf("please input the line: "); do { scanf("%c