У меня возникла проблема с реализацией C-клиентского/Java-сервера. У меня проблема с методом put на стороне сервера. Моя проблема такая же, как (Handling C char arrays with Java char arrays), но данное решение не работает в моем случае.Как обрабатывать массив C char в Java
Моя проблема в том, что я получаю поврежденный файл.
Когда я вижу исходный файл и полученный файл, я заметил, что Java не распознает какой-либо символ. Например, в исходном файле у меня есть символ, представленный 89 в полученном файле, у меня есть «ef bf bd», если я напишу массив байтов в UTF-8 или «3f», если я напишу его в кодировке US-ASCII. Вот важная часть моей программы: сторона
InputStream entreeSocket = socketService.getInputStream();
FileOutputStream out = new FileOutputStream(filename);
while(length > 0){
int nb;
if(length > buffer.length)
nb = socket.read(buffer,0,buffer.length);
else
nb = socket.read(buffer,0,length);
out.write(buffer,0,nb);
if(nb == -1) break;
length -=nb;
}
out.close();
socket.close();
Клиент:
char buffer[1024];
while(length > 0){
nb = read(fd,buffer,1024);
write(sockfd,buffer,nbChar);
length = length - nb;;
}
Любая помощь будет оценена. Заранее спасибо.
См. [Как написать файл UTF-8 с Java?] (Http://stackoverflow.com/questions/1001540/how-to-write-a-utf-8-file-with-java) – netcoder
I попробовали это, но это не сработало. Спасибо – user3036156
Является ли это работа для JNI? – EyeOfTheHawks