如何将socket上的文件保存到列表中

时间:2013-04-02 03:22:12

标签: java sockets

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

1 个答案:

答案 0 :(得分:0)

这部分代码:

bos.write(bis.read());

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

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