Есть файл s1, который нужно скопировать в s. Но как сделать так, чтобы можно было несколько файлов скопировать в один и как реализовать с помощью try-with-resourse?
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class Task2 {
public Task2() {
}
static void unsplit (String sourcePrefix, String destination){
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(sourcePrefix);
os = new FileOutputStream(destination);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
is.close();
os.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args) {
unsplit(
"E:\\Java\\14 лабораторная\\src\\com\\example\\Lab14\\s1.txt",
"E:\\Java\\14 лабораторная\\src\\com\\example\\Lab14\\s.txt"
);
}
}
Я попытался это сделать, но оно не хочет добавлять в public static void main новые sourcePrefix.
import java.io.*;
public class Task2 {
public Task2() {
}
static void unsplit (String sourcePrefix, String destination){
try {
FileInputStream is_1 = new FileInputStream(sourcePrefix);
FileInputStream is_2 = new FileInputStream(sourcePrefix);
FileInputStream is_3 = new FileInputStream(sourcePrefix);
FileOutputStream os = new FileOutputStream(destination);
SequenceInputStream sis=new SequenceInputStream(is_1,is_2,is_3);
byte[] buffer = new byte[1024];
int length;
while ((length = sis.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
sis.close();
is_1.close();
is_2.close();
is_3.close();
os.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args) {
unsplit(
"E:\\Java\\14 лабораторная\\src\\com\\example\\Lab14\\s1.txt",
"E:\\Java\\14 лабораторная\\src\\com\\example\\Lab14\\s.txt"
);
}
}
?
static void unsplit(String destination, String... sourcePrefix) {
try (OutputStream os = new FileOutputStream(destination)) {
for (String src : sourcePrefix) {
try (InputStream is = new FileInputStream(src)) {
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
unsplit(
"E:\\Java\\14 лабораторная\\src\\com\\example\\Lab14\\s.txt",
"E:\\Java\\14 лабораторная\\src\\com\\example\\Lab14\\s1.txt",
"E:\\Java\\14 лабораторная\\src\\com\\example\\Lab14\\s2.txt"
);
}
Сигнатура метода static void unsplit (String sourcePrefix, String destination)
у вас не поменялась. И дополнительные аргументы добавлять некуда.
Для нескольких однотипных аргументов используется запись method(Class... args){}
. Внутри метода переменная args
будет массивом Class[]
и содержать в массиве все аргументы, которые вы ввели. Обращаться к ним можно по индексу args[index]
или с помощью итератора, как в коде выше.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу игру под AndroidСтоит задача каким-то образом хранить данные
Подскажите, что за такая конструкция == ht2hTemp ? Нигде не могу найти описание
https://andreyexru/ubuntu/ustanovit-tomcat-9-na-ubuntu-16-04-vps/
читаем файл, удаляем пустые строки, записываем то что осталось