Что мне нужно сделать, это отправить несколько файлов с помощью DataStreams. Я делаю это, отправив имя файла, а затем байты файла. Однако мне нужно отправить неопределенное количество файлов. Вот код DataOutputStream
.Чтение нескольких байт [] из DataInputStream
out.writeUTF(path);
out.write(Files.readAllBytes(file.toPath()));
Он делает это для каждого файла, который необходимо отправить. Но я не знаю, как правильно это прочитать с DataInputStream
. Это то, что у меня есть до сих пор.
while (in.available() != 0) {
String path = in.readUTF();
byte bytes = in.readByte();
}
Очевидно, что это не сработает, так как это только чтение одного байта. Но я не знаю, как заставить его прочитать все байты. Поскольку отправляется несколько файлов, available()
будет равняться только 0, когда, конечно, читается конец всех файлов. Любая помощь приветствуется.
Что-то я совсем забыл упомянуть, я хочу, чтобы иметь возможность отправлять большой файл без исчерпания памяти, и я не думаю, что это сработает. Я думаю, что мне нужно будет использовать буфер, но я не знаю, какой класс поддерживает это с файлами.
Почему вы пишете каждый байт по отдельности, вместо того, чтобы писать весь массив байтов в один присест? –
@JonSkeet Нет особых причин. Было бы лучше сделать так? – Stripies
Как вы начали свой DataInputStream. Вы уверены, что он инициализирован правильно? Прошли ли вы и решили, что он читает только один раз и умирает? Это то, что вы действительно читаете в содержании файла, или вы ничего не читаете, потому что init был неправильным? – Churk