Select Git revision
StoreThread.java
StoreThread.java 1.44 KiB
import java.io.*;
import java.net.Socket;
public class StoreThread implements Runnable{
private final PrintWriter controller;
private final String filePath;
private final String fileName;
private final InputStream in;
private final OutputStream out;
private final Socket client;
private final int fileSize;
public StoreThread(PrintWriter co, String p, String n, InputStream i, OutputStream o, Socket c, int fs) {
controller = co;
filePath = p;
fileName = n;
in = i;
out = o;
client = c;
fileSize = fs;
}
@Override
public void run() {
try {
//Send ACK to client
out.write("ACK".getBytes());
//Prepare to write to file
File outputFile = new File(filePath+File.separator+fileName);
FileOutputStream fileOutput = new FileOutputStream(outputFile);
//Read correct bytes from input stream and write to file
byte[] buf = in.readNBytes(fileSize);
fileOutput.write(buf);
//Send completion ack to controller
controller.println("STORE_ACK "+fileName);
controller.flush();
//Close file output
fileOutput.close();
//Close streams
in.close();
out.close();
client.close();
}catch (Exception e){
System.out.println("error "+e);
}
}
}