zoukankan      html  css  js  c++  java
  • java 复制文件小结

    1,复制固定文件到某个目录   

    //    复制文件后,给文件重命名,带时间戳
        public static void addFileTime() throws Exception {
            String recordtime = "";
            Date dt = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");    
            recordtime = sdf.format(dt); 
            System.out.println("recordtime = " +recordtime);
            
    //        复制文件后,在文件名后加日期
            File dstFile = new File("E:\testfile\copyto\csvTest_"+recordtime+".zip");     //此处recordtime还可以用System.currentTimeMillis()
            if(!dstFile.exists()) {
                dstFile.createNewFile();
            }
            File srcFile = new File("E:\testfile\csvTest.zip");
            copyfile(dstFile, srcFile);
        }
        
           /**
            *    复制固定文件  ---- 在线采集复制固定的告警到告警服务器目录
            *    
            *    @return
            */
        public static void copyfile(File dtsFile,File  srcFile) {
            InputStream inStream = null;
            OutputStream outStream=null;
            try {
                outStream = new FileOutputStream(dtsFile);
                inStream = new FileInputStream(srcFile);
                
                byte b[] = new byte[1024];
                int n;
                try {
                    while((n=inStream.read(b))!=-1) {
                        outStream.write(b,0,n);
                    }
                }catch (IOException e) {
                    e.printStackTrace();
                }
            }catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    outStream.flush();
                    outStream.close();
                    inStream.close();
                } catch (IOException e2) {
                    e2.printStackTrace();
                }
            }
        }
    View Code

    2,复制随机文件到某个目录

       /**
            *    随机复制文件到某个目录
            *    
            *    @return
            */
        
        public static void copyFile_random(String rootPath,String copyToPath) throws Exception{
            File rootPathFile = new File(rootPath);
            File copyToPathFile = new File(copyToPath);
            if(!rootPathFile.exists()) {
                System.out.println(rootPath + "目录不存在");
                return;
            }
            if(!copyToPathFile.exists()) {
                boolean b = copyToPathFile.mkdirs();                     //创建目录
                if(!b) {
                    System.err.println(copyToPath+"创建目录失败");
                    return;                     // 创建目录失败直接返回
                }
            }
            File[] txtFiles = rootPathFile.listFiles(new FilenameFilter() {
                
                @Override
                public boolean accept(File dir, String name) {
                    // TODO Auto-generated method stub
                    if(name.toLowerCase().endsWith("xlsx")) {
                        return true;
                    }            
                    return false;
                }
            });
            if(txtFiles!=null) {
                Random r = new Random();
                int i = r.nextInt(txtFiles.length);
                File copyFile = txtFiles[i];
                System.out.println( "i===="+ i);
                File newFile = new File(copyToPath +"\"+System.currentTimeMillis()+"_" +copyFile.getName()); 
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(copyFile),"UTF-8"));
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile),"UTF-8"));
                String tmp = null;
                while(true) {
                    tmp = br.readLine();
                    if(tmp==null) {
                        break;                    
                    }
                    bw.write(tmp);
                    bw.write("
    ");      //写入换行符                
                }
                if(bw!=null) {
                    bw.flush();
                    bw.close();
                }
                if(br!=null) {
                    br.close();
                }
                System.out.println("操作执行完毕");
            }
        }
    View Code

    3,使用shell命令复制文件到linux机器目录        

        private static String DEFAULTCHART = "UTF-8";
    
        public static void main(String[] args) throws Exception {
            addAlarmFile_new("");                
        }
    
    /**
     * shell指令复制文件到linux机器
     * 
     * 
     */
        public static void addAlarmFile_new(String collectionServiceIP) throws Exception{
            String recordtime = "";
            Date dt = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");    
            recordtime = sdf.format(dt); 
            System.out.println("recordtime = " +recordtime);
            
            int port = 22;
            String username = "root";
            String password = "Changeme_123";
            
    //        创建连接
            Connection conn = new Connection(collectionServiceIP,port);
            conn.connect();
    //        验证用户名密码
            conn.authenticateWithPassword(username,password);
            
    //        进入到文件保存的目录alarm
            Session session = conn.openSession();        
            session.execCommand("cd opt/osss/share/NCE/FMServices/export/fileint/alarm/;ls");
    //        消费所有输入流
            String inStr = consumeInputStream(session.getStdout());
              consumeInputStream1(session.getStderr());
            session.close();
        
    //        将文件从alarm复制到fm目录下
            Session session1 = conn.openSession();    
            session1.execCommand("cp /cd opt/osss/share/NCE/FMServices/export/fileint/alarm/"+inStr+" /opt/osss/share/NCE/FMServices/export/fileint/fm/;");
            consumeInputStream1(session1.getStdout());
            consumeInputStream1(session1.getStderr());
            session1.close();
            
    //        修改文件权限和群组
            Session session2 = conn.openSession();    
            session2.execCommand("chown -R ossuser:ossgroup /opt/osss/share/NCE/FMServices/export/fileint/fm/");
            session2.close();
            
    //     查看复制过去文件的信息
    //        # stat testfile                #输入命令
    //          File: `testfile'
    //         Size: 102             Blocks: 8          IO Block: 4096   regular file         // Size和Block之前的字符串就是文件大小
    //        Device: 807h/2055d      Inode: 1265161     Links: 1
    //        Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    //        Access: 2014-08-13 14:07:20.000000000 +0800
    //        Modify: 2014-08-13 14:07:07.000000000 +0800
    //        Change: 2014-08-13 14:07:07.000000000 +0800
            
            String res = doShellCode(collectionServiceIP,"stat /opt/osss/share/NCE/FMServices/export/fileint/fm/"+inStr);
            System.out.println("res====="+res);
            
    //        记录复制过去的文件
            String zipSize = getZipSize(res);
            System.out.println("复制后文件"+inStr + "
     大小:"+ zipSize);
            tools.writeText("复制文件成功,文件大小为:" + zipSize, false);
            
            conn.close();    
            
        }
        
    
        private static java.lang.String getZipSize(java.lang.String shellResult) {
            if(shellResult==null||shellResult.equals("")) {
                System.out.println("传入查看文件大小的命令有问题");
                return null;
            }
            int startIndex = shellResult.indexOf("Size:");
            int endIndex = shellResult.indexOf("Blocks:");
            String ress = shellResult.substring(startIndex+5,endIndex);     //此处如果不+5,返回值就是“Size: 102”;+5之后,返回值就是“102”
            return ress;
    }
        
        public static String doShellCode(String collectionServiceIP,String ShellCode) throws Exception {
            
            int port = 22;
            String username = "root";
            String password = "Changeme_123";
            
    //        创建连接
            Connection conn = new Connection(collectionServiceIP,port);
            conn.connect();
    //        验证用户名密码
            conn.authenticateWithPassword(username,password);
            Session session = conn.openSession();        
            session.execCommand(ShellCode);
    //        消费所有输入流
    //        String inStr = consumeInputStream(session.getStdout());
            String errStr = consumeInputStream(session.getStderr());
            String result = processStdout(session.getStdout(),DEFAULTCHART);
            session.close();
            
            return result;
        }
         private static String processStdout(InputStream in, String charset){  
                InputStream    stdout = new StreamGobbler(in);
                    StringBuffer buffer = new StringBuffer();
                    try {  
                        BufferedReader br = new BufferedReader(new InputStreamReader(stdout,charset));  
                        String line=null;  
                        while((line=br.readLine()) != null){  
                            buffer.append(line+"
    ");  
                        }  
                    } catch (UnsupportedEncodingException e) {  
                        e.printStackTrace();  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                    return buffer.toString();  
                }  
                  
        
        /**
        *   消费inputstream,并返回
         * @throws Exception 
        */
        public static void consumeInputStream1(InputStream is) throws Exception{
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String s ;
            while((s=br.readLine())!=null){
                System.out.println(s);
            }
        }    
        
        
        public static String consumeInputStream(InputStream is) throws Exception{
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String s ;
            StringBuilder sb = new StringBuilder();
            ArrayList<String> files = new ArrayList<>();
            while((s=br.readLine())!=null){
                System.out.println(s);
                sb.append(s);
            }
            return files.get(new Random().nextInt(files.size()));
        }    
    View Code
  • 相关阅读:
    信号的阻塞
    善用布尔值
    多线程
    手机号码合理性的判断
    P(n,x)实现
    兄弟分钱、海盗分赃
    简单四则运算的实现
    模板技术
    合并字符串
    交换机和路由器比较
  • 原文地址:https://www.cnblogs.com/147258llj/p/14408614.html
Copyright © 2011-2022 走看看