Я пытаюсь смоделировать простое приложение загрузки, скопировав файл типа myBook.txt
и сохранив его как newBook.txt
в том же пакете Java.
Мне удалось заставить его работать на моей рабочей станции, но как мне заставить его работать на другой? Путь, который я предоставляю, будет отличаться до тех пор, пока не будет указано имя проекта, например "SimpleDownloadCentre\\..."
private final String SOURCE_PATH = "C:\\Users\\...\\Documents\\NetBeansProjects\\"
+ "SimepleDownloadCentre\\src\\simpledownloadcentre\\"
+ "myBook.txt";
private final String DESTINATION_PATH = "C:\\Users\\...\\Documents\\NetBeansProjects\\"
+ "SimepleDownloadCentre\\src\\simpledownloadcentre\\"
+ "newBook.txt";
public void startDownload() {
FileInputStream fis = null;
try {
String destination = DESTINATION_PATH;
String source = SOURCE_PATH;
fis = new FileInputStream(source);
FileOutputStream fos = new FileOutputStream(destination);
FileChannel fci = fis.getChannel();
FileChannel fco = fos.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (true) {
try {
int read = fci.read(buffer);
if (read == -1) {
break;
}
buffer.flip();
fco.write(buffer);
buffer.clear();
} catch (IOException ex) {
System.err.println("ERROR: unable to read block");
}
}
} catch (FileNotFoundException ex) {
System.err.println("ERROR: file not found");
} finally {
try {
fis.close();
} catch (IOException ex) {
System.err.println("ERROR: unable to close file channel");
}
}
}
Является ли Java NIO неправильным подходом к решению, которое мне нужно?
Заранее спасибо