首页 > 其他分享 >电子公文传输系统-个人贡献

电子公文传输系统-个人贡献

时间:2023-12-10 12:34:02浏览次数:30  
标签:公文 java 贡献 传输 IOException new catch import null

个人完成的工作

博客的撰写与信息的汇总




后端程序代码的编写

PutinStorage.java

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.Vector;


import javax.swing.JOptionPane;


public class PutinStorage {

    // 得到数据库表数据

    public static Vector getRows() {

        String sql_url = "jdbc:mysql://127.0.0.1:3307/myfiletra?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8";    //数据库路径(一般都是这样写),test是数据库名称
        String name = "root";        //用户名
        String password = "123456";    //密码
        Connection conn;
        PreparedStatement preparedStatement = null;
        Vector rows = null;
        Vector columnHeads = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");    //连接驱动
            conn = DriverManager.getConnection(sql_url, name, password);    //连接数据库
            preparedStatement = conn.prepareStatement("select filename,filesize from file");
            ResultSet result1 = preparedStatement.executeQuery();
            rows = new Vector();
            ResultSetMetaData rsmd = result1.getMetaData();
            while (result1.next()) {
                rows.addElement(getNextRow(result1, rsmd));
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            System.out.println("FAILED DRIVEN MYSQL");
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println("FAILED FAILED MYSQL");
            e.printStackTrace();
        }
        return rows;
    }

    // 得到数据库表头
    public static Vector getHead() {
        String sql_url = "jdbc:mysql://127.0.0.1:3307/myfiletra?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8";    //数据库路径(一般都是这样写),test是数据库名称
        String name = "root";        //用户名
        String password = "123456";    //密码
        Connection conn;
        PreparedStatement preparedStatement = null;
        Vector rows = null;
        Vector columnHeads = null;

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");        //连接驱动
            conn = DriverManager.getConnection(sql_url, name, password);    //连接数据库
            preparedStatement = conn.prepareStatement("select distinct filename,filesize from file");
            ResultSet result1 = preparedStatement.executeQuery();
            boolean moreRecords = result1.next();
            if (!moreRecords)
                JOptionPane.showMessageDialog(null, "NO RESULT");
            columnHeads = new Vector();
            ResultSetMetaData rsmd = result1.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); i++)
                columnHeads.addElement(rsmd.getColumnName(i));
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            System.out.println("FAILED DRIVEN MYSQL");
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println("FAILED OPEN MYSQL");
            e.printStackTrace();
        }
        return columnHeads;
    }

    // 得到数据库中下一行数据
    private static Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd) throws SQLException {
        Vector currentRow = new Vector();
        for (int i = 1; i <= rsmd.getColumnCount(); i++) {
            currentRow.addElement(rs.getString(i));
        }
        return currentRow;
    }

}

FileServer.java

import javax.xml.crypto.Data;
import java.io.*;

import java.net.*;


public class FileServer extends Thread{

	private static Socket s;
	private static ServerSocket serverSocket;
	private File source = new File("C:\\Users\\14914\\Desktop\\test\\moren55.txt");//服务端显示文件的存放位置
	static ServerSocket server;
	//6788端口负责向客户端发送文件
	static {
		try {
			server = new ServerSocket(6788);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public FileServer(Socket s, File source) throws IOException {
		super();
		this.s = s;
		this.source = source;
	}

	/**
	 * 获取想要客户端下载的目标文件的文件名
	 * @param s
	 * @return
	 * @throws IOException
	 */
	public static String getfilepath(Socket s) throws IOException {
		String name = null;
		InputStream is = null;
		try {
			//读取文件名
			is = s.getInputStream();
			int len1;
			byte[] bs = new byte[1024];
			len1 = is.read(bs);
			name = new String(bs, 0, len1);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return name;
	}

	@Override
	public void run() {
		DataInputStream bis = null;
		DataOutputStream bos = null;
			try {
//				//获取源文件的输入流
				System.out.println(source.getAbsolutePath());
				bis = new DataInputStream(new FileInputStream(source));
				//获取socket的输出流并包装
				Socket s = server.accept();
				bos = new DataOutputStream(s.getOutputStream());
				byte[] b = new byte[1027 * 9];
				int len = 0;
				System.out.println("向 " + s.getInetAddress().getHostAddress() + "开始传输....");
				while ((len = bis.read(b)) != -1) {
					bos.write(b, 0, len);
				}
				System.out.println("向 " + s.getInetAddress().getHostAddress() + "传输完成!");
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				try {
					if (bos != null) bos.flush();bos.close();
					if (bis != null) bis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
	}

	public void netStartServer() throws IOException {
		System.out.println("SOFEEM文件服务器已启动,等待连接...");
		//循环监听是否有客户端上传到服务器文件
		new FileTransferServer().start();
		while(true){
			File source = new File(new FileTree().serverfilename);
			Socket s = server.accept();
			System.out.println(s.getInetAddress().getHostAddress()+"进入服务器,准备传输...");
			source = new File(getfilepath(s));
			//根据每一个连接的客户端启动一条子线程
			new FileServer(s, source).start();
		}
	}

	public  static void main(String[] args) throws IOException {
		System.out.println("SOFEEM文件服务器已启动,等待连接...");
		//循环监听是否有客户端上传到服务器文件
		new FileTransferServer().start();
		while(true){
			File source = new File(new FileTree().serverfilename);
			Socket s = server.accept();
			System.out.println(s.getInetAddress().getHostAddress()+"进入服务器,准备传输...");
			source = new File(getfilepath(s));
			//根据每一个连接的客户端启动一条子线程
			new FileServer(s, source).start();
		}
	}

}

FileTransferClient.java

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Socket;

/**
 * 从本地读取文件,然后向服务器上传文件
 *
 */
public class FileTransferClient {
    private String host = "127.0.0.1";
    private int port =6787;
    private int port1 =6788;
    private Socket clientSocket;

    /**
     * 对应6787端口的构造器:完成上传文件功能
     * @throws IOException
     */
    public FileTransferClient() throws IOException {
    	clientSocket = new Socket(host, port);
    }

    /**
     * 对应6788端口的构造器:完成下载文件功能
     * @param temp
     * @throws IOException
     */
    public FileTransferClient(String temp) throws IOException {
        clientSocket = new Socket(host, port1);
    }

    /**
     * 向服务器端发送想要下载的目标文件的文件名
     * @param sfilePath
     */
    void sendM(String sfilePath){
        DataOutputStream sdos = null;
        try {
            System.out.println(sfilePath);
            sdos = new DataOutputStream(clientSocket.getOutputStream());
            sdos.write(sfilePath.getBytes());
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            if(sdos != null)
                try {
                    sdos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }

    }

    /**
     * 向服务器端上传文件
     * @param sfilePath:对应本地文件路径
     */
    void sendFile(String sfilePath) {


                try {
                    File sfile = new File(sfilePath);
                    System.out.println(sfilePath);
                    DataInputStream sdis = new DataInputStream(new FileInputStream(sfilePath));
                    DataOutputStream sdos = new DataOutputStream(clientSocket.getOutputStream());
                    byte[] sbuf = new byte[1024 * 9];
                    int slen = 0;
                    sdos.write(sfile.getName().getBytes());
                    while ((slen = sdis.read(sbuf)) != -1) {
                        sdos.write(sbuf, 0, slen);
                    }
                    sdos.flush();
                    sdis.close();
                    sdos.close();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
}

上传代码至gitee

代码链接

分配一些工作

小组代码总行数

  • 2500行

我贡献的代码行数

  • 356行

小组总文档数

  • 12

我贡献的文档数

  • 3

链接

团队作业(三):确定分工
团队作业(五):冲刺总结3
团队作业(五):冲刺总结2

标签:公文,java,贡献,传输,IOException,new,catch,import,null
From: https://www.cnblogs.com/gfynb/p/17892389.html

相关文章

  • 传输层TCP|UDP
    TCP/UDP简介TCP和UDP是两种常见的互联网传输协议,它们都是在IP网络上运行的传输层协议。TCP(TransmissionControlProtocol:传输控制协议)是一种面向连接的可靠协议。它提供数据传输的有序性、完整性、流量控制和拥塞控制。TCP的通信过程包括三次握手建立连接和四次挥手断开连接。使用......
  • Linux内核贡献成熟度模型 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/process/contribution-maturity-model.htmlLinux内核贡献成熟度模型背景作为2021年Linux内核维护者峰会的一部分,讨论了招募内核维护者以及维护者继任方面的挑战。其中一些结论包括,作为Linux内核社区的一部分,公司需要允许工程师作为工作......
  • USB数据传输与手机授权:充电宝常规使用不需要授权
    layout:posttitle:USB数据传输与手机授权:充电宝常规使用不需要授权tags:[数据传输,USB接口,USB]categories:[电子硬件]date:2023-12-0514:10:15description:概述此篇为解答充电宝骗局问题,骗局概述:两个人做局,以充测试充电宝是否损坏为由,插到受骗者手机上,受骗者允许......
  • 内外网文件交换系统:解决跨网数据传输难题,推动企业高效协作
    在如今这个数字化时代,数据的流通与共享已经成为了企业和团队之间日常运营的关键环节。然而,内外网之间的文件传输经常会给企业和团队带来一系列的困扰。传统的文件传输方式往往受到网络环境、安全性、传输效率和管理成本等因素的限制。1、网络环境复杂化:随着业务的发展,很多中大型......
  • 如何给Fedora做本地化贡献
    闲来无事,想给开源做做贡献。本来打算搞代码,但是源码下载下来,光下载编译依赖就要半天,代码又多,懒得看,就先看看有没有什么简单的。翻译倒是简单,我英语还行,所以先做做本地化看看。我用的Linux系统是Fedora,因为它安装起来很方便,可以轻松和Win11双系统,所以我就在Fedora官网上面逛。发......
  • 数据传输对象解释
    在传递数据到页面时,通常使用DTO(数据传输对象)或VO(视图对象)的概念。选择使用哪个取决于你的具体需求和设计原则。DTO(数据传输对象):特点:DTO是用于在不同层之间传输数据的对象,它的目的是为了在各个层次之间传递数据而不暴露内部实现细节。使用场景:在前后端分离的架构中,DTO通常用于......
  • git~为github三方仓库添加贡献的正确方式
    为github三方仓库添加贡献如果希望成为某些开源框架的贡献者,例如如希望加入higress、keycloak、ruoyi这些框架的开发者行列,那么今天的文章应该可以帮到您。克隆和拉取项目FORKHigress到您的存储库。要完成这项工作,您只需单击alibaba/higress主页右侧的Fork按钮。然后你......
  • 两台服务器千兆,交换机也是千兆,可是传输只有100mbps?
    如果您的服务器和交换机都支持千兆传输速度,但实际传输速度只有100mbps,可能有以下几个原因:网络电缆问题:请确保使用的网线是千兆以太网(GigabitEthernet)标准的,并且没有损坏或松动。有时,低质量或老化的网线可能无法支持千兆传输速度。网络适配器设置问题:确保服务器上的网络适配器已正......
  • USB数据传输与手机授权:充电宝常规使用不需要授权
    layout:posttitle:USB数据传输与手机授权:充电宝常规使用不需要授权tags:[数据传输,USB接口,USB]categories:[电子硬件]date:2023-12-0514:10:15description:概述此篇为解答充电宝骗局问题,骗局概述:两个人做局,以充测试充电宝是否损坏为由,插到受骗者手机上,受骗者允许......
  • DMA传输数据(M->P)
    前言  上文讨论了利用DMA将数据从一个存储器搬运到另一个存储器,本文讨论将数据从M->P。将数据从数组转移到串口外设并发送出去。代码voidMYDMA_Init(DMA_Stream_TypeDef*DMA_Streamx,u32chx,uint32_tpar,u32mar,u16ndtr){DMA_InitTypeDefDMA_InitStructure;......