문제가 있습니다.문자열의 바이트 []에서 문자열로?
문자열 형식의 소켓을 통해 데이터를 보냈습니다. 일부 문자열을 사용하여 문자열 [[[email protected]
]에 바이트 []을 가져 왔습니다. 자, 제 질문은 이것이 문자열이라는 것입니다. String result = new String(byteArray);
을 사용할 수있는 바이트 배열로 다시 변환하려면 어떻게해야합니까?
String을 byte []로 변환하려고 시도했지만 허용되지 않습니다.
byte[] all = Files.readAllBytes(f.toPath());
this.out.println(destinationOfFile + "/" + file.getName() + "*" + all);
그리고이 : 구글 만 (이미 바이트이기 때문에 내가 사용할 수 없습니다) 보통 .getBytes()와 새로운 String (someByteArray)
이 전송되는 무슨입니다 함께했다 받은 내용 :
private void writeToFile(String str) {
String file = str.substring(0, str.indexOf("*"));
String write = str.substring(str.indexOf("*")+1);
편집 : 나는 다른 방식으로 처리했습니다. 파일에서 모든 바이트를 가져 오는 대신 소켓을 통해 각 행을 전송하여 줄 단위로 읽지 않습니다. 클라이언트에서는 HashMap에 데이터를 저장하고 "Done sending File"을 받으면 모든 문자열을 파일에 씁니다.
byte []. toString()'은 유용한 것을 생성하지 않습니다; 이것은 되돌릴 수있는 작업이 아닙니다. 임의의 바이트 배열을 문자열로 변환하지 마십시오. Java'char'는 C'char'가 아닙니다. – McDowell
McDowell 내가 C 문자를 사용한다고 생각하게 만드는 이유는 무엇입니까? – Lolmewn
나는 그렇지 않다. 그러나 C와 같은 언어는 옥텟과 문자 유형을 결합하여 데이터를 손상시키지 않으면 서 'byte'배열을 Java 문자열로 안전하게 변환 할 수 있다고 가정합니다. _ 문자가 실제로 문자 데이터 인 경우, 바이트 데이터 인 경우 _ Java는 이진 안전 문자열을 가지고 있지 않습니다. 바이트 배열을 사용하십시오. – McDowell