我有一个完美的方法,但是如何将文件的每一行添加到列表中而不是将其写入文件? (有些文件是.docx,有些是.txt)
private static void saveMultiple(Socket socket) {
try {
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
DataInputStream dis = new DataInputStream(bis);
int filesCount = dis.readInt();
File[] files = new File[filesCount];
for (int i = 0; i < filesCount; i++) {
long fileLength = dis.readLong();
String fileName = dis.readUTF();
files[i] = new File("/Users/.../Desktop/Data/" + fileName);
FileOutputStream fos = new FileOutputStream(files[i]);
BufferedOutputStream bos = new BufferedOutputStream(fos);
for (int x = 0; x < fileLength; x++) {
bos.write(bis.read());
}
bos.close();
}
dis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
这部分代码:
bos.write(bis.read());
基本上从套接字读取1个字节并将其写入文件。现在不是这样做,而是可以将字节缓冲到字节数组中,并使用java.util.String String(byte[] bytes)
构造函数将其转换为String。考虑使用ByteInputStream.read(byte[] b, int off, int len)
方法。
您还必须考虑字符编码和内存消耗。