1.传输文件名
2.传输文件的内容
// example:
Socket socket = new Socket(mServerIP, mServerPort);
File file = new file(file_name);
DataInputStream dis = new DataInputStream(new BufferedInputStream( new FileInputStream(file));
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//传输文件名
dos.writeUTF(file.getName());
dos.flush();
传输文件的内容
byte[] buf = new byte[512 * 1024];
int read = 0;
while (true) {
read = dis.read(buf);
if (read == -1)
break;
dos.write(buf, 0, read);
dos.flush();
read = 0;
}
// 文件接收
// 文件总大小
// long totalLength = 0;
int readLength = 0;
// 文件位置
String filepath;
if (mServerSocket == null || mServerSocket.isClosed()) {
mServerSocket = new ServerSocket(mPort);
}
mClientSocket = mServerSocket.accept();
mDis = new DataInputStream(new BufferedInputStream(
mClientSocket.getInputStream()));
File file = new File(mSavePath);
if (!file.exists()) {
file.mkdirs();
}
filepath = mSavePath + mDis.readUTF();
mDos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(filepath)));
while (true) {
readLength = 0;
if (mDis != null) {
readLength = mDis.read(buf);
}
if (readLength == -1) {
break;
}
mDos.write(buf, 0, readLength);
}
if (mDos != null) {
mDos.close();
mDos = null;
}
if (mDis != null) {
mDis.close();
mDis = null;
}