java文件上传到某一台指定服务器怎么弄?
要将Java文件上传到指定服务器,可以使用以下步骤:
使用Java中的Socket类或Java NIO(New IO)库来建立网络连接。
在连接上发送文件,可以使用Java中的FileInputStream或FileReader类从本地文件系统读取文件内容,然后使用OutputStream或Writer类将文件内容写入网络连接。
在服务器端,使用Java中的ServerSocket类或Java NIO库来接收网络连接。
在服务器端,读取网络连接中的文件内容,可以使用Java中的InputStream或Reader类从网络连接中读取文件内容,然后使用Java中的FileOutputStream或FileWriter类将文件内容写入服务器本地文件系统。
关闭网络连接和文件流。
需要注意的是,要确保服务器端有足够的权限来访问文件系统,并且要正确处理文件名和路径,以避免安全问题和文件冲突。
代码如下。。。我测试过了。。。。下面两个类是在同一台机器上进行测试的,先运行Serverjava,再运行Clientjava
import javaio;
import javanet;
import javatextSimpleDateFormat;
import javautilDate;
public class Server {
public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(8080);
Socket socket = ssaccept();
BufferedReader in = //获取客户端发过来的消息
new BufferedReader(
new InputStreamReader(socketgetInputStream()));
PrintWriter out = //用于向客户端发送消息
new PrintWriter(
new OutputStreamWriter(
socketgetOutputStream()),true);
while(true){
String message = inreadLine();//读取消息
if("quit"equals(message))//退出命令
break;
String s[] = messagesplit("\\s+");
if("dir"equals(s[0])){
File dir = new File(s[1]);
File[] files = dirlistFiles();
//向客户端发送文件消息
for(File file:files){
Date date = new Date(filelastModified());
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//日期格式化
FileInputStream is = new FileInputStream(file);
outprintln(filegetName()+"\t"+dfformat(date)+"\t"+((isavailable()+1023)/1024)+"k");
}
outprintln("ok");
}
}
socketclose();
inclose();
outclose();
ssclose();
}
}
-------------------------------------------------------------------------------------------------------------
import javaio;
import javanet;
public class Client {
public static void main(String[] args) throws Exception{
InetAddress add = InetAddressgetByName(null);
Socket socket = new Socket(add,8080);
BufferedReader in = //获取服务器端发过来的消息
new BufferedReader(
new InputStreamReader(socketgetInputStream()));
PrintWriter out = //用于向服务器端发送消息
new PrintWriter(
new OutputStreamWriter(
socketgetOutputStream()),true);
outprintln("dir d:/test");
String mes;
while(true){
mes = inreadLine();
if("ok"equals(mes))
break;
Systemoutprintln(mes);
}
outprintln("quit");
socketclose();
inclose();
outclose();
}
}
希望能帮到你。。。仍有问题可以追问或者直接HI我。。。
通过流来读取,例如:
TextFileForm fileForm = (TextFileForm) form; FormFile formFile = fileFormgetTxtFile(); if (formFilegetFileData()length == 0) { responsesetCharacterEncoding("gb2312"); responsegetWriter()write(""); } InputStream in = formFilegetInputStream(); WordExtractor extractor = new WordExtractor(); String str = extractorextractText(in);这段代码就是负责读取word的
你可以使用JSch
JSch全称是“Java Secure Channel”
是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。同时也是支持执行命令;
以下是大概运行的代码,只是提供大致思路,可以去查官方API和demo
import comjcraftjschChannelExec;import comjcraftjschChannelSftp;
import comjcraftjschChannelSftpLsEntry;
import comjcraftjschJSch;
import comjcraftjschJSchException;
import comjcraftjschSession;
import comjcraftjschSftpATTRS;
import comjcraftjschSftpException;
try{
Session session = new JSch()getSession(user, ip, port);
sessionsetPassword(pwd);
sessionsetConfig("StrictHostKeyChecking", "no");
sessionsetConfig("userauthgssapi-with-mic", "no");
sessionconnect();
ChannelExec exec = (ChannelExec) sessionopenChannel("exec");
execsetCommand("ifconfig");//这里是你要执行的命令,部分命令不支持,具体自己执行下
ByteArrayOutputStream bao = new ByteArrayOutputStream();
execsetOutputStream(bao);
ByteArrayOutputStream baerr = new ByteArrayOutputStream();
execsetErrStream(baerr);
execconnect();
while (!execisEOF())
;
String errmsg = new String(baerrtoByteArray(), "utf-8");
if (StringUtilsnotNull(errmsg)) {
throw new RuntimeException(errmsg);
} else {
Systemoutprintln(new String(baotoByteArray(), "utf-8"));
}
}catch(Exception e){
eprintStackTrace();
}finally{
//关闭session等操作
}
0条评论