使用java连接linux查看linux目录下文件
1、在windows用java远程服务器获取对应路径下的文件名import java.io.*;import java.util.ArrayList;import java.util.List;import org.eclipse.core.runtime.Assert;import ch.ethz.ssh2.ChannelCondition;import ch.ethz.ssh2.Connect
·
1、在windows用java远程服务器获取对应路径下的文件名
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.Assert;
import ch.ethz.ssh2.ChannelCondition;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.StreamGobbler;
/**
* 遍历出远程服务器上指定目录下的所有文件夹
*
* @author WangSong
*
*/
public class GetAllSubfolders {
public static void main(String[] args){
//输入服务器地址,用户名,密码,路径
getSubfolderName("10.254.XX.XX","root","pasword","/opt/job/TagFile");
}
private GetAllSubfolders(){}
/**
* 得到服务器上指定文件夹下所有子文件夹(第一级子文件夹)
* @return
*/
public static List<String> getSubfolderName(String romoteAddr,String username,
String password,String targetFolder) {
List<String> folderNameList = new ArrayList<String>();
try {
Connection connection = new Connection(romoteAddr);// 创建一个连接实例
connection.connect();// Now connect
boolean isAuthenticated = connection.authenticateWithPassword(username, password);//認證
Assert.isTrue(isAuthenticated, "用戶名或密碼錯誤!");
ch.ethz.ssh2.Session sess = connection.openSession();// 創建一個會話
sess.requestPTY("bash");
sess.startShell();
InputStream stdout = new StreamGobbler(sess.getStdout());
InputStream stderr = new StreamGobbler(sess.getStderr());
BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout));
BufferedReader stderrReader = new BufferedReader(new InputStreamReader(stderr));
//向服务器上输入命令
PrintWriter out = new PrintWriter(sess.getStdin());
out.println("cd " + targetFolder);//進入日志文件存放的目录
out.println("ll");
out.println("exit");
out.close();
sess.waitForCondition(ChannelCondition.CLOSED|ChannelCondition.EOF | ChannelCondition.EXIT_STATUS,30000);
//本机查看远程操作的指令及状态
System.out.println("输入指令后对应的显示信息:");
while (true) {
String line = stdoutReader.readLine();
if (line == null)
break;
// System.out.println(line);
//获取文件名称
if(line.contains("-rw-r--r--")){
//取出正确的文件名称
StringBuffer sb =
new StringBuffer(line.substring(line.lastIndexOf(":")+3, line.length()));
// line = sb.toString().replace(" ", "/opt/job/TagFile/");
line = sb.toString().replace(" ", "/opt/job/TagFile/");
folderNameList.add(line);
// System.out.println(line);
}
}
System.out.println("ExitCode: " + sess.getExitStatus());
System.out.println(folderNameList);
//关闭连接
sess.close();
connection.close();
stderrReader.close();
stdoutReader.close();
} catch (IOException e) {
e.printStackTrace(System.err);
System.exit(2);
}
return folderNameList;
}
}
2、linux下,用java获取linux本地路径下的文件
public static ArrayList<String> queryFileNames(String filePath){
ArrayList<String> es = new ArrayList<>();
File f = new File(filePath);
File[] ts = f.listFiles();
File[] fs = f.listFiles();
for (int i =0 ; i < fs.length ; i++){
if (ts[i].isFile()){
es.add(ts[i].toString());
}
}
//获取目录下csv后缀的文件名
// for (int j = 0; j<es.size();j++){
// if (es.get(j).indexOf("csv")>0) {
// System.out.println(es.get(j));
// }
// }
return es;
}
更多推荐
已为社区贡献1条内容
所有评论(0)