java 复制文件小结
2021-03-02 10:29
标签:device star rac 成功 小结 hmm 连接 输入流 copyfile 1,复制固定文件到某个目录 2,复制随机文件到某个目录 3,使用shell命令复制文件到linux机器目录 --- DEFAULTCHART 有待修改 java 复制文件小结 标签:device star rac 成功 小结 hmm 连接 输入流 copyfile 原文地址:https://www.cnblogs.com/147258llj/p/14408614.html// 复制文件后,给文件重命名,带时间戳
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();
}
}
}
/**
* 随机复制文件到某个目录
*
* @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("\n"); //写入换行符
}
if(bw!=null) {
bw.flush();
bw.close();
}
if(br!=null) {
br.close();
}
System.out.println("操作执行完毕");
}
}
/**
* 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 + "\n 大小:"+ 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+"\n");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return buffer.toString();
}
public static void setCharset(String charset) {
DEFAULTCHART = charset;
}
/**
* 消费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
上一篇:Java_JDK下载
下一篇:vue前端如何把对象转化成数组