① 用java实现文件的上传与下载
1.下载简单,无非是把服务器上的文件或者数据库中的BLob(或其他二进制型),用流读出来,然后写到客户端即可,要注意 ContentType。2.上传,可以用Apache Commons Upload等开源工具,或者自己写:form要用enctype="multipart/form-data"然后服务器端也是用IO把客户端提交的文件流读入,然后写到服务器的文件系统或者数据库里。不同的数据库对Lob字段操作可能有所不同,建议用Hibernate,JPA等成熟的ORM框架,可以不考虑数据库细节。
② 怎么用java编写简单客户端程序
我这里有一个例子希望能够帮助你 public class Client{private Socket socket;try{Socket socket=new Socket ("localhoast',8088); ip=InetAddress.getLocalHost(); String localip=ip.getHostAddress(); System.out.println(localip); String name=ip.getHostName(); System.out.println(name);}catch(Exception e){ }public void start(){try{ Run r2=new Run(); Thread t1=new Thread(r2); t1.setDaemon(true); t1.start(); Scanner sc=new Scanner(System.in); OutputStream os=socket.getOutputStream(); OutputStreamWriter osw=new OutputStreamWriter(os); PrintWriter writer=new PrintWriter(osw,true); while(true){ writer.println(sc.nextLine()); } }catch(Exception e){}}public static void main(String args[]){Client client=new Client();client.start();}class Run implements Runnable{ public void run() { while(true){ try { InputStream is=socket.getInputStream(); InputStreamReader isr=new InputStreamReader(is); BufferedReader br=new BufferedReader(isr); while(true){ String str=br.readLine(); System.out.println("服务器说:"+str); if("bye".equals(str)){ System.out.println("再见客户端"); System.out.println("聊天结束"); } } } catch (IOException e) { e.printStackTrace(); } finally{ try { socket.close(); } catch (IOException e) { e.printStackTrace(); }} } } }}
③ Java怎样把文件写入到客户端的硬盘上
packagetest;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;publicclassTest{publicstaticvoidmain(String[]args)throwsFileNotFoundException{Stringsource="helloworld!";StringfilePath="c:\file.txt";StringnewFilePath="c:\"+System.currentTimeMillis()+".txt";saveFile1(source);saveFile2(filePath,newFilePath);}/***直接写入数据*@paramsource*@return*/publicstaticbooleansaveFile1(Stringsource){bytebuf[]=source.getBytes();try(FileOutputStreamfs=newFileOutputStream("c:\file.txt")){for(inti=0;i<buf.length;i++){fs.write(buf[i]);}returntrue;}catch(Exceptione){e.printStackTrace();}returnfalse;}/***读取文件另存为*@paramfilePath*@paramnewFilePath*@return*/publicstaticbooleansaveFile2(StringfilePath,StringnewFilePath){Filefile=newFile(filePath);if(file.exists()&&file.isFile()){try(FileInputStreamfi=newFileInputStream(file);FileOutputStreamfs=newFileOutputStream(newFilePath)){intbuf;while((buf=fi.read())!=-1){fs.write(buf);}returntrue;}catch(Exceptione){e.printStackTrace();}}returnfalse;}}
④ java下载服务器上的文件到客户端
java编程方法下载服务器上的文件到本地客服端,代码如下:
importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileOutputStream;importjava.io.FileWriter;importjava.io.IOException;importjava.io.InputStream;importjava.net.URL;importjava.net.URLConnection;publicclassDownLoad{publicstaticvoiddownloadFile(URLtheURL,StringfilePath)throwsIOException{FiledirFile=newFile(filePath);if(!.exists()){//文件路径不存在时,自动创建目录dirFile.mkdir();}//从服务器上获取图片并保存URLConnectionconnection=theURL.openConnection();InputStreamin=connection.getInputStream();FileOutputStreamos=newFileOutputStream(filePath+"\123.png");byte[]buffer=newbyte[4*1024];intread;while((read=in.read(buffer))>0){os.write(buffer,0,read);}os.close();in.close();}publicstaticvoidmain(String[]args){//下面添加服务器的IP地址和端口,以及要下载的文件路径StringurlPath="http://服务器IP地址:端口/image/123.png";//下面代码是下载到本地的位置StringfilePath="d:\excel";URLurl=newURL(urlPath);try{downloadFile(url,filePath);}catch(IOExceptione){e.printStackTrace();}}}
⑤ java 打包成客户端
java生成的exe可执行文件,执行的前提是必须机器上面安装了JVM(java虚拟机),就是说,不是任何一台机器都能跑java做的exe。 换句话来说,JAVA是调用底层的C包,必须经过虚拟机的编译。也正是如此,JAVA具有跨平台性。几种java转exe的工具1. 从www.towerj.com获得一个TowerJ编译器,该编译器可以将你的CLASS文件编译成EXE文件。 注:现在已经找不到,不提供了,被人家收购了。2. 利用微软的SDK-Java 4.0所提供的jexegen.exe创建EXE文件,这个软件可以从微软的网站免费下载,地址如下: http://www.microsoft.com/java/download/dl_sdk40.htmjexegen的语法如下:jexegen /OUT:exe_file_name /MAIN:main_class_name main_class_file_name.class [and other classes]3. Visual Cafe提供了一个能够创建EXE文件的本地编译器。你需要安装该光盘上提供的EXE组件。4. 使用InstallAnywhere创建安装盘。但就是要>8M(带jre),还有一种是>1M的(不带jre)。 但是它可以编译成各种平台上可以使用的exe程序。5. 使用IBM AlphaWorks提供的一个高性能Java编译器,该编译器可以从下面的地址获得: http://www.alphaworks.ibm.com/tech/hpc6. JET是一个优秀的Java语言本地编译器。该编译器可以从这个网站获得一个测试版本: http://www.excelsior-usa.com/jet.html7. Instantiations公司的JOVE http://www.instantiations.com/jove/…ejovesystem.htm JOVE公司合并了以前的SuperCede,一个优秀的本地编译器,现在SuperCede已经不复存在了。注:太烦了,老是出来一个对话框,表示这是jove公司的产品。8. JToEXE Bravo Zulu Consulting, Inc开发的一款本地编译器,本来可以从该公司的网页上免费下载的,不过目前在该公司的主页上找不到了。 公司主页:http://www.bravozulu.com/9.Exe4j10.jbuilder
⑥ java io 把word文件生成到客户端
应该是不可能的,因为你获取不到客户端的路径,并且你没有权限,无法控制文件保存在客户端的系统中。
⑦ java 服务器怎样给客户端传输数据
java需要利用scoket实现网络通信,在通信时可以利用是从客厅、获取输入输出流达到传输数据效果
⑧ java 服务器与客户端的文件传输
可以直接通过流的形式上传或者下载。import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.Properties;import com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.JSch;import com.jcraft.jsch.Session;import com.jcraft.jsch.SftpException;import hkrt.b2b.view.util.Log;import java.util.Vector;import zn.ccfccb.util.CCFCCBUtil;/** */public class CCFCCBSftp { /** * 连接sftp服务器 * * @return */ public static ChannelSftp connect() { ChannelSftp sftp = null; try { JSch jsch = new JSch(); jsch.getSession(CCFCCBUtil.CCFCCBHOSTNAME, CCFCCBUtil.CCFCCBHOSTNAME, 22); Session sshSession = jsch.getSession(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBHOSTNAME, 22); System.out.println("Session created."); sshSession.setPassword(CCFCCBUtil.CCFCCBLOGINPASSWORD); Properties sshConfig = new Properties(); sshConfig.put("StrictHostKeyChecking", "no"); sshSession.setConfig(sshConfig); sshSession.connect(); System.out.println("Session connected."); System.out.println("Opening Channel."); Channel channel = sshSession.openChannel("sftp"); channel.connect(); sftp = (ChannelSftp) channel; System.out.println("Connected to " + CCFCCBUtil.CCFCCBHOSTNAME + "."); } catch (Exception e) { } return sftp; } /** * 连接sftp服务器 * * @param host 主机 * @param port 端口 * @param username 用户名 * @param password 密码 * @return */ public static ChannelSftp connect(String host, int port, String username, String password) { ChannelSftp sftp = null; try { JSch jsch = new JSch(); jsch.getSession(CCFCCBUtil.CCFCCBHOSTNAME, CCFCCBUtil.CCFCCBHOSTNAME, 22); Session sshSession = jsch.getSession(CCFCCBUtil.CCFCCBLOGINNAME, host, port); System.out.println("Session created."); sshSession.setPassword(CCFCCBUtil.CCFCCBLOGINPASSWORD); Properties sshConfig = new Properties(); sshConfig.put("StrictHostKeyChecking", "no"); sshSession.setConfig(sshConfig); sshSession.connect(); System.out.println("Session connected."); System.out.println("Opening Channel."); Channel channel = sshSession.openChannel("sftp"); channel.connect(); sftp = (ChannelSftp) channel; System.out.println("Connected to " + host + "."); } catch (Exception e) { } return sftp; } /** * 上传文件 * * @param directory 上传的目录 * @param uploadFile 要上传的文件 * @param sftp */ public void upload(String directory, String uploadFile, ChannelSftp sftp) { try { sftp.cd(directory); File file = new File(uploadFile); sftp.put(new FileInputStream(file), file.getName()); } catch (Exception e) { e.printStackTrace(); } } /** * 下载文件 * * @param directory 下载目录 * @param downloadFile 下载的文件 * @param saveFile 存在本地的路径 * @param sftp * @return */ public static String download(String directory, String downloadFile, String saveFile, ChannelSftp sftp) { try { sftp.cd(directory); File file = new File(saveFile); FileOutputStream fos = new FileOutputStream(file); sftp.get(downloadFile, fos); sftp.disconnect(); fos.close(); } catch (Exception e) { Log.info("下载文件过程出错:" + e.getMessage()); return "false"; } return "true"; } /** * 删除文件 * * @param directory 要删除文件所在目录 * @param deleteFile 要删除的文件 * @param sftp */ public void delete(String directory, String deleteFile, ChannelSftp sftp) { try { sftp.cd(directory); sftp.rm(deleteFile); } catch (Exception e) { } } /** * 列出目录下的文件 * * @param directory 要列出的目录 * @param sftp * @return * @throws SftpException */ public Vector listFiles(String directory, ChannelSftp sftp) throws SftpException { return sftp.ls(directory); } public static void main(String[] args) { CCFCCBSftp sf = new CCFCCBSftp(); String host = CCFCCBUtil.CCFCCBHOSTNAME; int port = 22; String username = CCFCCBUtil.CCFCCBLOGINNAME; String password = CCFCCBUtil.CCFCCBLOGINPASSWORD; String directory = "/ccfccb/904999900099/download/";//String uploadFile = "D:\\tmp\\upload.txt"; String downloadFile = "CCF_904999900099_20150317_0001.zip"; String saveFile = CCFCCBUtil.CCFCCBUploadFilePath + "//" + "CCF_904999900099_20150317_0001.zip";//String deleteFile = "delete.txt"; ChannelSftp sftp = CCFCCBSftp.connect(host, port, username, password);//sf.upload(directory, uploadFile, sftp); CCFCCBSftp.download(directory, downloadFile, saveFile, sftp); //sf.delete(directory, deleteFile, sftp); try { sftp.cd(directory);// sftp.mkdir("ss"); System.out.println("finished"); } catch (Exception e) { } }}
⑨ java服务器端用传输给客户端文件流(fileinputstream),客户端应该如何接收(socket )
其实这个问题你应该先想一下socket到底是一个什么东西,在网络编程中socket到底用来做什么的。socket:在操作系统内核中它代表网络连接的一个端点(endpoint),在应用程序中它代表一个打开的文件。socketpair唯一确定的一条网络连接,socketpair就是客户端socket和服务端socket的一个组合。也就是客户端ip和port与服务端ip和port的组合。一条网络连接也就是一条通信的信道,tcp连接代表的信道是全双工的。以信道来讲,逻辑上就存在两个管道来代表输出与输入来发送和接收信息。
那么在应用程序上我们就可以拿到这2个管道来完成socket之间的通信。
以你的应用来看输出流fos就代表着图中的红色管道,那么在服务端就应该是这个样的。
ScoketconnSock=serverSocket.accept();//connSock代表着服务端的Socket
InputStreamis=connSock.getInputStream();//输入流is代表图中的红色管道
OutputStreaos=connSock.getOutputStream();//输出流os代表图中的绿色管道
在服务端有一个字节缓冲区来存放从is读取的字节数据
byte[]buffer=newbyte[1024];
然后服务端读取数据来填充这个字节缓冲区
is.read(buffer);//比如这样
然后就根据你的需求来操作这个buffer了。
然后把处理过后的数据通过os发送给客户端。os就是图中的那个绿色管道
os.write(处理过后的数据);
⑩ 求用java写一个ftp服务器客户端程序。
import java.io.*;import java.net.*;public class ftpServer extends Thread{ public static void main(String args[]){ String initDir; initDir = "D:/Ftp"; ServerSocket server; Socket socket; String s; String user; String password; user = "root"; password = "123456"; try{ System.out.println("MYFTP服务器启动…."); System.out.println("正在等待连接…."); //监听21号端口 server = new ServerSocket(21); socket = server.accept(); System.out.println("连接成功"); System.out.println("**********************************"); System.out.println(""); InputStream in =socket.getInputStream(); OutputStream out = socket.getOutputStream(); DataInputStream din = new DataInputStream(in); DataOutputStream dout=new DataOutputStream(out); System.out.println("请等待验证客户信息…."); while(true){ s = din.readUTF(); if(s.trim().equals("LOGIN "+user)){ s = "请输入密码:"; dout.writeUTF(s); s = din.readUTF(); if(s.trim().equals(password)){ s = "连接成功。"; dout.writeUTF(s); break; } else{s ="密码错误,请重新输入用户名:";<br> dout.writeUTF(s);<br> <br> } } else{ s = "您输入的命令不正确或此用户不存在,请重新输入:"; dout.writeUTF(s); } } System.out.println("验证客户信息完毕…."); while(true){ System.out.println(""); System.out.println(""); s = din.readUTF(); if(s.trim().equals("DIR")){ String output = ""; File file = new File(initDir); String[] dirStructure = new String[10]; dirStructure= file.list(); for(int i=0;i<dirStructure.length;i++){ output +=dirStructure[i]+"\n"; } s=output; dout.writeUTF(s); } else if(s.startsWith("GET")){ s = s.substring(3); s = s.trim(); File file = new File(initDir); String[] dirStructure = new String[10]; dirStructure= file.list(); String e= s; int i=0; s ="不存在"; while(true){ if(e.equals(dirStructure[i])){ s="存在"; dout.writeUTF(s); RandomAccessFile outFile = new RandomAccessFile(initDir+"/"+e,"r"); byte byteBuffer[]= new byte[1024]; int amount; while((amount = outFile.read(byteBuffer)) != -1){ dout.write(byteBuffer, 0, amount);break; }break; } else if(i<dirStructure.length-1){ i++; } else{ dout.writeUTF(s); break; } } } else if(s.startsWith("PUT")){ s = s.substring(3); s = s.trim(); RandomAccessFile inFile = new RandomAccessFile(initDir+"/"+s,"rw"); byte byteBuffer[] = new byte[1024]; int amount; while((amount =din.read(byteBuffer) )!= -1){ inFile.write(byteBuffer, 0, amount);break; } } else if(s.trim().equals("BYE"))break; else{ s = "您输入的命令不正确或此用户不存在,请重新输入:"; dout.writeUTF(s); } } din.close(); dout.close(); in.close(); out.close(); socket.close();}catch(Exception e){ System.out.println("MYFTP关闭!"+e); }}}