Java的文件上傳管理器 控制台
文件上傳下載管理器項目技術
JDBC + IO +套接字
實現功能
客戶端註冊:通過輸入用戶名,密碼,確認密碼並且校驗完成以後將用戶信息儲存在資料庫中。
客戶端登錄:通過輸入用戶名和密碼到資料庫中校驗,校驗完成進入文件上傳下載管理器。
上傳文件:通過輸入上傳文件的路徑上傳到資料庫,支持多個文件上傳。
查看文件:通過登錄的用戶名查找上傳的文件。
下載文件:通過輸入文件的編號和下載的路徑,從資料庫進行下載。
刪除文件:通過輸入文件的編號進行單個文件的刪除。
(PS:這次花了一天才寫完,不過收穫也很多,不足之處,多多交流)
完整代碼
User.java
包com.xk; import java.io.Serializable; @SuppressWarnings(「串列」)public class User implements Serializable { 私人字元串用戶名; 私人字元串密碼; public String getUsername(){ 返回用戶名 } public void setUsername(String username){ this.username = username; } public String getPassword(){ 返回密碼; } public void setPassword(String password){ this.password = password; } }
未定義
FileEntity.java
包com.xk; import java.io.Serializable; @SuppressWarnings(「串列」)public class FileEntity implements Serializable { 私人字元串用戶名; private String fileName; 私有int id private byte [] fileContent; public FileEntity(int id,String fileName){ this.id = id; this.fileName = fileName; } public FileEntity(){ } public int getId(){ 返回id } public void setId(int id){ this.id = id; } public String getUsername(){ 返回用戶名 } public void setUsername(String username){ this.username = username; } public String getFileName(){ return fileName; } public void setFileName(String fileName){ this.fileName = fileName; } public byte [] getFileContent(){ return fileContent; } public void setFileContent(byte [] fileContent){ this.fileContent = fileContent; } @覆蓋 public String toString(){ return id +「 t」+ fileName; } }
未定義
CommandRelay.java
包com.xk; import java.io.Serializable; import java.util.ArrayList; @SuppressWarnings(「串列」)public class CommandRelay實現Serializable { private String命令; 私有布爾標誌 private Object userObject = null; private Object fileObject = null; private byte [] bytes = null; private ArrayList fileList = null; public String getCommand(){ 返回命令; } public void setCommand(String command){ this.command =命令; } public Object getUserObject(){ 返回userObject; } public void setUserObject(Object userObject){ this.userObject = userObject; } public Object getFileObject(){ return fileObject; } public void setFileObject(Object fileObject){ this.fileObject = fileObject; } public boolean isFlag(){ 返回標誌 } public void setFlag(boolean flag){ this.flag = flag; } public ArrayList getFileList(){ return fileList; } public void setFileList(ArrayList fileList){ this.fileList = fileList; } public byte [] getBytes(){ 返回位元組; } public void setBytes(byte [] bytes){ this.bytes = bytes; } }
未定義
DBUtil.java
包com.xk; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; 公共類DBUtil { private static final String DRIVER =「com.mysql.jdbc.Driver」; private static final String URL =「jdbc:mysql:// localhost:3306 / FileUpload」; private static final String NAME =「root」; private static final String PASSWORD =「root」; / * *資料庫連接 * / 公共連接的getConnection(){ 嘗試{ 的Class.forName(DRIVER); Connection conn = DriverManager.getConnection(URL,NAME,PASSWORD); 返回康涅狄格州 } catch(ClassNotFoundException e){ e.printStackTrace(); 返回NULL; } catch(SQLException e){ e.printStackTrace(); 返回NULL; } } / * *資料庫關閉 * / public void close(Connection conn,PreparedStatement ps,ResultSet rs){ 嘗試{ if(rs!= null){ rs.close(); } if(ps!= null){ ps.close(); } if(conn!= null){ conn.close(); } } catch(SQLException e){ e.printStackTrace(); } } }
未定義
DBTools.java
包com.xk; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; 公共類DBTools { DBUtil dbu = new DBUtil(); 連接con = dbu.getConnection(); / * *用戶登錄 * / public boolean login(User user)throws Exception { String sql =「select * from users where username =?and password =?」; PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,user.getUsername()); ps.setString(2,user.getPassword()); ResultSet rs = ps.executeQuery(); 如果(rs.next()){ 返回真 } else { 返回假 } } / * *用戶註冊 * / public boolean register(User user){ String sql =「insert into users(username,password)value(?,?)」; 嘗試{ PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,user.getUsername()); ps.setString(2,user.getPassword()); ps.executeUpdate(); } catch(SQLException e){ e.printStackTrace(); 返回假 } 返回真 } / * *上傳文件 * / public boolean uploadFile(FileEntity fe){ String sql =「insert into file(username,filename,filecontent)VALUES(?,?,?)」; 嘗試{ PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,fe.getUsername()); ps.setString(2,fe.getFileName()); ps.setBytes(3,fe.getFileContent()); ps.executeUpdate(); } catch(SQLException e){ e.printStackTrace(); 返回假 } 返回真 } / * *下載文件 * / public byte [] downloadFile(FileEntity fe)throws Exception { String sql =「從文件中選擇filecontent id =?」; PreparedStatement ps = con.prepareStatement(sql); ps.setInt(1,fe.getId()); ResultSet rs = ps.executeQuery(); InputStream is = null; 如果(rs.next()){ is = rs.getBinaryStream(1); ByteArrayOutputStream(); byte [] buffer = new byte [is.available()]; int len while((len = is.read(buffer))!= -1){ baos.write(緩衝液,0,LEN); } 返回緩衝區 } 返回null; } / * *查看文件 * / public ArrayList viewFile(FileEntity fe)throws Exception { ArrayList fileList = new ArrayList (); String sql =「select id,filename from file where username =?」; PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,fe.getUsername()); ResultSet rs = ps.executeQuery(); 而(rs.next()){ fileList.add(new FileEntity(rs.getInt(1),rs.getString(2))); } return fileList; } / * *刪除文件 * / public boolean deleteFile(FileEntity fe)throws Exception { String sql =「從文件中刪除id =?」; PreparedStatement ps = con.prepareStatement(sql); ps.setInt(1,fe.getId()); ps.execute(); if(ps.getUpdateCount()> 0){ 返回真 } 返回假 } }
未定義
Server.java
包com.xk; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String [] args)throws Exception { @SuppressWarnings(「資源」) ServerSocket ss = new ServerSocket(8722); Socket socket = null; 的System.out.println(「伺服器已經啟動!」); 而(真){ socket = ss.accept(); ServerThread st = new ServerThread(socket); st.start(); } } }
未定義
ServerThread.java
包com.xk; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.ArrayList; public class ServerThread extends Thread { Socket socket = null; public ServerThread(Socket socket){ this.socket = socket; } public void run(){ 嘗試{ ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); CommandRelay cr =(CommandRelay)ois.readObject(); 嘗試{ cr = inquire(cr); oos.writeObject(CR); } catch(Exception e){ e.printStackTrace(); } } catch(ClassNotFoundException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } }
運行效果


※Java初學者基礎問題及答案匯總
※Java-網路編程
※關於JDBC的連接深入了解
※掃碼登錄的安全性分析
TAG:java學習吧 |
※Cloud Commander:一個有控制台和編輯器的 Web 文件管理器
※with與上下文管理器
※微軟開源 Windows 文件管理器
※CPU 電源管理器:Linux 系統中 CPU 主頻的控制和管理
※傳微軟正在開發全新文件管理器 採用Fluent Design技術
※Android Q新版文件管理器採用全新設計
※SmsManager(簡訊管理器)
※django之管理器
※思科視頻監控管理器(VSM)被秘密植入硬編碼root後門
※AudioManager(音頻管理器)
※谷歌測試最新功能:Chrome OS文件管理器更桌面化
※微軟計劃改進Windows 10文件資源管理器的搜索體驗
※Vim-plug:極簡 Vim 插件管理器
※使用 Arch Linux 鏡像列表管理器來管理你的鏡像
※用Python編寫一個本地論文管理器
※重煥生機,微軟開源 Windows 文件管理器
※HPE為其OneSphere混合雲管理器添加容器服務
※密碼管理器LastPass更新:新增對Android Oreo自動填充特性的支持
※Win7與Win8文件管理器對比Win8文件管理強在哪?
※AutoLine源碼分析之調度管理器