RT,弄了一个晚上快崩溃了……import java.net.*;
import java.io.*;
import java.util.*;
import java.text.*;
import java.text.SimpleDateFormat;public class  TrafficOpServer
{
private static ServerSocket serverSocket;
// private static listenClient listen;
private static String filePath = "f://test.txt"; public static void main(String[] args) throws Exception
{
int port; if (args.length == 0)
{
System.out.println("Usage: java simpleServer [port]");
System.exit(1);
}
port = Integer.parseInt(args[0]);// startServer(port);
serverSocket = new ServerSocket(port);


try
{
while (true)
{
Socket clientSocket = serverSocket.accept();
DataInputStream dataIn = new DataInputStream(clientSocket.getInputStream());
DataOutputStream fileOut = new DataOutputStream(new FileOutputStream(filePath,false));//想把对方传的内容重新写入test.txt,但第一次会清空原来的内容,接下来每次都是在原来的内容后面附加上去……
byte abyte[] = new byte[1024];
int inbytes; do
{
inbytes = dataIn.read(abyte);
if (inbytes != -1)
{
fileOut.write(abyte, 0, inbytes);
}
}
while (inbytes != -1);
dataIn.close();
fileOut.flush();
fileOut.close();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

解决方案 »

  1.   

    //想把对方传的内容重新写入test.txt,但第一次会清空原来的内容
    从哪儿看出  第一次会清空原来的内容
      

  2.   

    就是第一次调用启动的时候会把TEST.TXT里面的内容清空……接下来10S读一次的内容都会直接附在上一次读入内容的后面……
      

  3.   

    第一次是清空后写入,比如test.txt里面本来有内容,第一次读入后文本里面是:warden301
    第二次是:
    warden301
    warden302
    第三次就变成:
    warden301
    warden302
    warden303
    然后重新java TrafficOpServer 3232后又变成本来那样……
      

  4.   

    把DataOutputStream 换成BufferedWriter试试,。
      

  5.   

    怎么会这样呢,实在不行就在写前加一句:
    new File(filePath).delete();
    或rename...
      

  6.   

    太……了吧……昨晚也试了似乎也不行……快抓狂了……今天要写入一个小的字符串到TXT里面不知道什么地方又出问题了……一到DO WHILE语句里面的那个DATAIN.READ()的时候就卡住不动了……不知道为什么……
      

  7.   


    inbytes = dataIn.read(abyte);
    改为
    inbytes = dataIn.read(abyte,0,1024);
    试试
      

  8.   


    DataOutputStream fileOut = new DataOutputStream(new FileOutputStream(filePath,false));
    应该是FileOutputStream(filePath,true);
    true表示append吧
      

  9.   

    将DataOutputStream fileOut = new DataOutputStream(new FileOutputStream(filePath,false));
    改为:
    DataOutputStream fileOut = new DataOutputStream(new FileOutputStream(filePath,true));试试
      

  10.   

    true应该是会变成在后面接着输出吧?我是想每次输出到TXT之前都把TXT里面的内容清空掉啊?额……T-T
      

  11.   

    实在没办法了,那就程序以运行时就先把以前的TXT文件做一个删除操作,然后在新建一遍
      

  12.   

    改成下面这样试试:
    BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    BufferedWriter writer = new BufferedWriter(new FileWriter(filepath));String str = reader.readLine();
    while (str!= null) {
       writer.write(str);
       str = reader.readLine();
    }writer.flush();
    writer.close();
    reader.close();
      

  13.   

    谢谢楼上的……不过好像也不行额……
    那样完全写不到FILEPATH那个文件里面去……
      

  14.   

    额……解决了……原来是客户端那边出的WHILE语句出问题了……感谢各位……joejoe1991能不能到这个帖子?我拿分给你?http://topic.csdn.net/u/20071127/18/2098d0af-b986-462e-b1bd-237ea5d3a8f7.html