0

我有一个完美运行的方法,但不是让它写入文件,而是如何让它将文件的每一行添加到列表中?(有些文件是 .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();
    }
}
4

1 回答 1

0

这部分代码:

bos.write(bis.read());

基本上从套接字读取 1 个字节并将其写入文件。现在,您可以将字节缓冲到字节数组中,并使用 java.util.StringString(byte[] bytes)构造函数将其转换为字符串,而不是这样做。考虑使用ByteInputStream.read(byte[] b, int off, int len)方法。

您还必须考虑字符编码和内存消耗。

于 2013-04-02T03:46:15.817 回答