安装ftp参考:
https://www.cnblogs.com/zhi-leaf/p/5983550.html
[root@avs oracle]# yum install vsftp
设置vsftpd开机启动:
[root@avs oracle]# systemctl enable vsftpd.service
启动并查看vsftpd服务状态,systemctl启动服务成功不会有任何提示,绿色的active表示服务正在运行
[root@avs oracle]# systemctl start vsftpd.service
在window上输入ftp://IP地址,可看到ftp下的目录(pub为系统预设的)
到上面为止,我们发现ftp目录下并不能读写文件,这是由文件夹权限和selinux引起的。
设置文件夹权限,将pub文件夹的权限设置为777
[root@avs oracle]# yum install vsftp
设置vsftpd开机启动:
[root@avs oracle]# systemctl enable vsftpd.service
启动并查看vsftpd服务状态,systemctl启动服务成功不会有任何提示,绿色的active表示服务正在运行
[root@avs oracle]# systemctl start vsftpd.service
[root@avs oracle]# systemctl status vsftpd.service
外部证ftp是否可以正常访问
首先关闭防火墙(也可以设置防火墙规则,得再百度了)
[root@avs oracle]# systemctl stop firewalld.service
为防止机器重启后防火墙服务重新开启,可将防火墙服务永久关闭。
[root@avs oracle]# systemctl disable firewalld.service
在window上输入ftp://IP地址,可看到ftp下的目录(pub为系统预设的)
到上面为止,我们发现ftp目录下并不能读写文件,这是由文件夹权限和selinux引起的。
设置文件夹权限,将pub文件夹的权限设置为777
chmod -R 777 /var/ftp/pub
java代码利用ftp在windows端获取linux端的文件:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.ArrayList;
import java.util.List;
import sun.net.ftp.FtpClient;
import sun.net.ftp.FtpProtocolException;
public class ReportReader {
public List<String[]> readDataFromCVS(String ip,String user,String password){
String path="/var/ftp/pub/1.txt"; //linux中ftp文件夹目录/var/ftp/pub
int port=21;
List<String[]> list=new ArrayList<String[]>();
BufferedReader br=null;
FtpClient ftp=null;
SocketAddress addr=new InetSocketAddress(ip,port);
ftp=FtpClient.create();
try {
ftp.connect(addr);
ftp.login(user, password.toCharArray());
ftp.setBinaryType();
br=new BufferedReader(new InputStreamReader(ftp.getFileStream(path),"GBK"));
ftp.close();
String line=br.readLine();
while((line=br.readLine())!=null) {
System.out.println(line);
String[] arr=line.split(",");
list.add(arr);
}
} catch (FtpProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public static void main(String[] args) {
new ReportReader().readDataFromCVS("linux的ip", "系统用户名", "系统用户名的密码");
}
}