为什么每次写入都会在前面的内容后呢?

warden325 2007-12-08 02:21:42
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();
}
}
}
...全文
99 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
warden325 2007-12-09
  • 打赏
  • 举报
回复
谢谢楼上的……不过好像也不行额……
那样完全写不到FILEPATH那个文件里面去……
warden325 2007-12-09
  • 打赏
  • 举报
回复
额……解决了……原来是客户端那边出的WHILE语句出问题了……感谢各位……

joejoe1991能不能到这个帖子?我拿分给你?

http://topic.csdn.net/u/20071127/18/2098d0af-b986-462e-b1bd-237ea5d3a8f7.html
warden325 2007-12-08
  • 打赏
  • 举报
回复
似乎还是一样……额
joejoe1991 2007-12-08
  • 打赏
  • 举报
回复
把DataOutputStream 换成BufferedWriter试试。。。,。
warden325 2007-12-08
  • 打赏
  • 举报
回复
第一次是清空后写入,比如test.txt里面本来有内容,第一次读入后文本里面是:warden301
第二次是:
warden301
warden302
第三次就变成:
warden301
warden302
warden303
然后重新java TrafficOpServer 3232后又变成本来那样……
warden325 2007-12-08
  • 打赏
  • 举报
回复
就是第一次调用启动的时候会把TEST.TXT里面的内容清空……接下来10S读一次的内容都会直接附在上一次读入内容的后面……
jingxinzhong 2007-12-08
  • 打赏
  • 举报
回复
//想把对方传的内容重新写入test.txt,但第一次会清空原来的内容
从哪儿看出 第一次会清空原来的内容
joejoe1991 2007-12-08
  • 打赏
  • 举报
回复
改成下面这样试试:
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();
awusoft 2007-12-08
  • 打赏
  • 举报
回复
顶一下
warden325 2007-12-08
  • 打赏
  • 举报
回复
试了……但似乎不会删除重建,还是一样--奇怪……
runshine 2007-12-08
  • 打赏
  • 举报
回复
实在没办法了,那就程序以运行时就先把以前的TXT文件做一个删除操作,然后在新建一遍
warden325 2007-12-08
  • 打赏
  • 举报
回复
true应该是会变成在后面接着输出吧?我是想每次输出到TXT之前都把TXT里面的内容清空掉啊?

额……T-T
kase2123456 2007-12-08
  • 打赏
  • 举报
回复
将DataOutputStream fileOut = new DataOutputStream(new FileOutputStream(filePath,false));
改为:
DataOutputStream fileOut = new DataOutputStream(new FileOutputStream(filePath,true));试试
ou198391 2007-12-08
  • 打赏
  • 举报
回复
ddddddddddddddd
sharpyuce 2007-12-08
  • 打赏
  • 举报
回复

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

runshine 2007-12-08
  • 打赏
  • 举报
回复

inbytes = dataIn.read(abyte);
改为
inbytes = dataIn.read(abyte,0,1024);
试试
warden325 2007-12-08
  • 打赏
  • 举报
回复
太……了吧……昨晚也试了似乎也不行……快抓狂了……

今天要写入一个小的字符串到TXT里面不知道什么地方又出问题了……一到DO WHILE语句里面的那个DATAIN.READ()的时候就卡住不动了……不知道为什么……
guoyueshan 2007-12-08
  • 打赏
  • 举报
回复
怎么会这样呢,实在不行就在写前加一句:
new File(filePath).delete();
或rename...

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧