📄 sendfile.java
字号:
import java.awt.Canvas;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Graphics;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
import sun.security.krb5.internal.crypto.g;
public class SendFile {
public static void main(String[] args) {
FileDialog fdg=new FileDialog(new Frame(),"打开",FileDialog.LOAD);
fdg.setVisible(true);
String directory=fdg.getDirectory();
String filename=fdg.getFile();
String name1=fdg.getName();
System.out.println(directory+"aa"+filename+"bb"+name1);
File file = new File(directory+filename); //有3百多M
// 建立文件的输入流
System.out.println(file.getName());
String name=file.getName();
long filesize = file.length();
double fenzi=0;
long fenmu=Math.round(filesize/(1024*1024)+0.5);
System.out.println(filesize);
FileInputStream aFile = null;
try {
aFile = new FileInputStream(file);
} catch (Exception e) {
e.printStackTrace();
}
byte[] buf = new byte[1024 * 1024]; // 读取数据的缓存块
int len = 0; // 每次读取的长度
long curPos = 0L; // 文件读取的当前位置
byte actId = 1; // 操作标识,第一次提交为1.其它提交时为2
String fileId = ""; // 文件的唯一标识
byte actRet = 0; // 提交处理后结果
// 分块读取文件
try {
while ((len = aFile.read(buf)) != -1) {
// 打开远程
URLConnection con = getConnection();
OutputStream os = con.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
// 发送基本信息
dos.writeByte(actId);
if (actId == 1)
actId = 2;
dos.writeUTF(fileId);
dos.writeLong(curPos);
dos.writeUTF(name);
dos.flush();
// 写入数据
os.write(buf, 0, len);//将指定buf字节数组中从0开始的 len 个字节写入基础输出流
os.flush();
// 关闭发送流,提交数据
os.close();
curPos += len;
// 打印时间
//Date date=new Date(System.currentTimeMillis());
//Calendar cal = Calendar.getInstance(Locale.CHINESE);
//System.out.println(cal.YEAR+"年"+cal.MONTH+"月"+cal);
System.out.println(new Date(System.currentTimeMillis())+" submit over");
InputStream uis = con.getInputStream();
DataInputStream dis = new DataInputStream(uis);
byte retActId = dis.readByte();
String retFileId = dis.readUTF();
byte retActRet = dis.readByte();
fileId = retFileId;// 文件的唯一标识
// 打印时间
System.out.println(new Date(System.currentTimeMillis()) + " listen over");
fenzi=fenzi+1;
// Graphics g= Class.forName("Graphics");
System.out.println("传输了总文件的"+fenmu+"分之"+((int)fenzi));
}//while循环结束
} catch (Exception e) {
e.printStackTrace();
}
}
private static URLConnection getConnection() throws IOException {
URL url = new URL("http://192.168.1.4:8080/webproject1/servlet/UploadServlet");
URLConnection con=url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(true);
con.setDefaultUseCaches(true);
return con;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -