圧縮クライアントのプログラム
java eclipeを使って通信のプログラムを勉強しています。
参考にしている本は、TCP/IPソケットプログラミングjava編です。
本に書かれてるソースコードのとおりに入力したら、
Exception in thread "main" java.io.FileNotFoundException: test.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at socket_127.CompressClient.main(CompressClient.java:20)
というエラーが出ました。
このエラーを調べると、
「指定されたパス名で示されるファイルが開けなかったことを通知します。」とかかれていました。このプログラムが入っているフォルダの中にtest.txtというテキストファイルを作成して同じフォルダに入れてあります。
このプログラムの引数は、
<Server> IPアドレス
<Port> 110
<File> test.txt
としました。
このエラーをとる方法を教えていただけないでしょうか?
下にソースコードを載せますので、解決方法をお願いします。
package socket_127;
import java.net.*; // for Socket
import java.io.*; // for IOException and [File]Input/OutputStream
public class CompressClient {
public static final int BUFSIZE = 256; // Size of read buffer
public static void main(String[] args) throws IOException {
if (args.length != 3)
throw new IllegalArgumentException("Parameter(s): <Server> <Port> <File>");
String server = args[0];
int port = Integer.parseInt(args[1]);
String filename = args[2];
FileInputStream fileIn = new FileInputStream(filename);
FileOutputStream fileOut = new FileOutputStream(filename + ".gz");
Socket sock = new Socket(server, port);
sendBytes(sock, fileIn);
InputStream sockIn = sock.getInputStream();
int bytesRead;
byte[] buffer = new byte[BUFSIZE];
while ((bytesRead = sockIn.read(buffer)) != -1) {
fileOut.write(buffer, 0, bytesRead);
System.out.print("R");
}
System.out.println();
sock.close();
fileIn.close();
fileOut.close();
}
private static void sendBytes(Socket sock, InputStream fileIn)
throws IOException {
OutputStream sockOut = sock.getOutputStream();
int bytesRead;
byte[] buffer = new byte[BUFSIZE];
while ((bytesRead = fileIn.read(buffer)) != -1) {
sockOut.write(buffer, 0, bytesRead);
System.out.print("W");
}
sock.shutdownOutput();
}
}