读书人

已二进制方式读取文件并返回给发送者响

发布时间: 2012-01-30 21:15:58 作者: rapoo

已二进制方式读取文件并返回给发送者响应的问题(见内)
程序做为一个服务器端接收客户端发过来的消息,然后已二进制形式读取本地的一个文件,然后把读取到的内容响应给客户端.

部分代码:
BufferedReader in = new BufferedReader
(new InputStreamReader(incoming.getInputStream()));
PrintWriter out = new PrintWriter
(incoming.getOutputStream(), true /* autoFlush */);

InputStream br = null;

String line = null;

//读入多个字节到字节数组中,byteread为一次读入的字节数
byte[] tempbytes = new byte[100];
int byteread = 0;
br = new FileInputStream( "e://GetUARet.bin ");

while ((line = in.readLine()) != null) { //收到的消息不为空

while ((byteread = br.read(tempbytes)) != -1){
out.write(tempbytes);
}

问题:1。这种读取文件的方式是否是二进制的形式?
2。怎样才能把读取的内容响应给客户端?out.write(tempbytes)这种写法好像不对

[解决办法]
参考....

import java.io.*;
import java.net.*;
import java.util.*;

public class EchoServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket ss = new ServerSocket(8189);
Socket incoming = ss.accept();
try {
InputStream is = incoming.getInputStream();
OutputStream os = incoming.getOutputStream();

Scanner in = new Scanner(is);
PrintWriter out = new PrintWriter(os, true);
out.println( "Hello!Enter BYE to exit! ");
boolean done = false;
while (!done && in.hasNextLine()) {
String message = in.nextLine();
Scanner fileIn = new Scanner(new FileReader( "d://1.dat "));
while (fileIn.hasNextLine())
out.println(fileIn.nextLine());

fileIn.close();
if (message.trim().equals( "BYE "))
done = true;
}
} finally {
incoming.close();
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

读书人网 >J2SE开发

热点推荐