Witam,
Próbuję napisać klasę do kopiowania plików z udostępnionego na Windowsie folderu do folderu znajdującego się w systemie Linux. Niby wszystko ładnie kopiuje tylko, że np. jak kopiuje plik tekstowy który ma 154 bajtów to utworzony na Linuksie plik ma 156 bajtów. Chciałbym prosić o pomoc w znalezieniu gdzie robię błąd w swoim kodzie?
Porównanie zawartości:
Plik Windows:
Pierwsza linia
Pierkolejna
asfPDFVB
gdVCB
ąśę
łą
WI@#$!%
CVFRrdfs
Plik Linux:
뿃뻃Pierwsza linia
Pierkolejna
asfPDFVB
gdVCB
ąśę
łą
WI@#$!%
CVFRrdfs
Kod klasy kopiującej plik z Windowsa na Linuksa:
public class SmbCopyToLocal {
private String urlToCopyFile; // Ściezka do pliku do skopiowania
private String pathToSaveFile; //Scieżda do pliku do zapisania
private NtlmPasswordAuthentication auth; // Dane do autoryzacji
private SmbFile smbFile; // Utworzenie obiektu pliku do otwarcia
private SmbFileInputStream fileIn; // Otwarcie strumienia odczytu
private int sign; // Utworzenie zmiennej do której będą wczytywane kolejne znaki
private PrintWriter fileOut; // Otwarcie strumienia zapisu
//----------------------------------------------------------------------------------------Deklaracja zmiennych oraz obiektów
public SmbCopyToLocal(String url, String path, String user, String pass) {
urlToCopyFile = url;
pathToSaveFile = path;
auth = new NtlmPasswordAuthentication(null, user, pass);
try {
smbFile = new SmbFile(urlToCopyFile, auth);
fileIn = new SmbFileInputStream(smbFile);
fileOut = new PrintWriter(pathToSaveFile);
sign = fileIn.read();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SmbException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} // Konstruktor przyjmujący ściezki odczytu i zapisu
public void copy() {
while (sign != -1) {
fileOut.write(sign);
try {
sign = fileIn.read();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("Succesfull");
fileOut.close();
try {
fileIn.close();
} catch (IOException e) {
e.printStackTrace();
}
} // Metoda kupiująca wskazany plik
}