gpt4 book ai didi

java - BufferedWriter 仅在第一次运行

转载 作者:行者123 更新时间:2023-12-01 05:35:16 24 4
gpt4 key购买 nike

我有一个简单的服务器客户端程序,它从客户端获取信息并将其传递到服务器。消息通过 DatagramSocket 传递。然后,服务器获取消息并将其写入文本文件。

我的初始消息工作正常(打印到文件中)。但是,如果我再次运行客户端,则新消息不会写入文件。我必须重新启动服务器才能再次打印消息。

我有一个 arrayCopy 方法,可以复制两个数组并将其放入一个更大的数组中。

客户

public static void main(String[] args) throws IOException {
System.out.println("Enter Username");
BufferedReader usernameInput = new BufferedReader(new InputStreamReader(System.in));

// Get the Username
String username = directoryInput.readLine();
byte[] usrname = username.getBytes();

//Copy Username to Array
byte[] tempArray = copyarray(packetheader, usrname);

buffer = tempArray;
mypacket = new DatagramPacket(buffer, buffer.length, IPaddr, 40000);
clientSocket = new DatagramSocket();
clientSocket.send(mypacket);

服务器

public static void main(String args[]) throws Exception {
String Database;
textfile = "C:\\textfile.txt";
DatagramSocket serverSock = new DatagramSocket(40000);

byte[] rbuf = new byte[97];

DatagramPacket recievedPacket = new DatagramPacket(rbuf, rbuf.length);
serverSock.receive(recievedPacket);
String byteToString = new String(recievedPacket.getData(), 0, recievedPacket.getLength(), "US- ASCII");
FileWriter fstream = new FileWriter(textfile);
BufferedWriter out = new BufferedWriter(fstream);
out.write(byteToString);
out.close
}

最佳答案

下面应该做你想要的,你需要的是一个循环,允许你读取下一个包,下一个等等。

public static void main(String args[]) throws Exception {
String textfile = "C:\\textfile.txt";
DatagramSocket serverSock = new DatagramSocket(40000);

byte[] rbuf = new byte[97];

DatagramPacket recievedPacket = new DatagramPacket(rbuf, rbuf.length);

while(true) {
serverSock.receive(recievedPacket);
String byteToString = new String(recievedPacket.getData(), 0, recievedPacket.getLength(), "US-ASCII");
FileWriter fstream = new FileWriter(textfile);
BufferedWriter out = new BufferedWriter(fstream);
out.write(byteToString);
out.close();
recievedPacket.setLength(rbuf.length);
}
}

但是,这将用新消息覆盖文件,而不是附加它们(如果这是您想要的)。如果您想存储所有消息,您可能需要将文件创建移出循环。

关于java - BufferedWriter 仅在第一次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8291866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com