Plik jest udostępniony w sieci. W sumie dostęp do całego serwera jest odblokowany dla wszystkich urzadzeń. Na komputerze mogę go skopiować, na telefonie w RS Esplorer też mogę bez problemu to zrobić. No ale chciałem mieć to z poziomu mojej aplikacji.
W android studio kombinuję z dwoma metodami:
Kopiuj
try {
SmbFile from = new SmbFile("smb://192.168.0.2/comarch/kolektor/u");
SmbFile to = new SmbFile("file:////storage/emulated/0/Download/out.txt");
to.createNewFile();
from.copyTo(to);
} catch (MalformedURLException | SmbException ex) {
toastAnywhere(ex.toString());
}
W tej wyskakuje bład "The network name cannot be found."
Natomiast w tej:
Kopiuj
try {
SmbFile source =
new SmbFile("smb://192.168.0.2/comarch/kolektor/u");
File destination =
new File(ET.getText().toString());
SmbFileInputStream in = new SmbFileInputStream(source);
OutputStream out = new FileOutputStream(destination);
// Copy the bits from Instream to Outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
// Maybe in.close();
in.close();
out.close();
} catch (Exception e) {
toastAnywhere(e.toString());
}
wyskakuje że nie ma pliku docelowego. Nieważne co wpiszę zawsze to samo. Czy plik o tej nazwie istnieje czy nie też to samo.
Na angielskich stronach znalazłem że obie metody powinny działać. Pewnie u mnie jakaś drobnostka jest nie tak.
AAA i uprzedzę pytania!! Tak plik źródłowy nazywa się po prostu "u" bez żadnej końcówki.
antygandzik