2014-06-05 4 views
0

유니 코드 파일 (UTF-8)을 읽고 다른 파일에 다시 쓰고 싶습니다.유니 코드 파일 IO in Codename One

코드는 내가 읽고 내가 심지어

text = com.codename1.io.Util.readToString(in,"UTF-8"); 

DataInputStream dis = new DataInputStream(in); 
text = com.codename1.io.Util.readUTF(dis); 

을 시도하지만 유니 코드를 읽을 점점되지 있지 않다

final String textFile = "/readme.txt"; 
String text = ""; 

InputStream in = Display.getInstance().getResourceAsStream(null, textFile); 

if (in != null){ 
    try { 
     text = com.codename1.io.Util.readToString(in); 
     in.close(); 
    } catch (IOException ex) { 
     System.out.println(ex); 
     text = "Read Error"; 
    } 
} 

(Textscreen in Codename One, how to read text file?에서와 같이)이며, 사용 . 내가 파일을 생성 관찰

작성하기위한

내가 뭐하는 거지,

String content = "Some Unicode String"; 
OutputStream stream = fs.openOutputStream(path + "/" + fileName); 
stream.write(content.getBytes()); 
stream.close(); 

과 노력,

DataOutputStream dos = new DataOutputStream(stream); 
dos.writeUTF(content); 

은 ANSI 인코딩입니다.

업데이트 : 솔루션 @ 샤이의 회신 사항에 따라

,

읽기 :

// For text file in package structure 
InputStream in = Display.getInstance().getResourceAsStream(null, "/" + textFile); 

// For file in file system 
InputStream in = fs.openInputStream(textFile); 


if (in != null) { 
    try { 
     text = com.codename1.io.Util.readToString(in, "UTF-8"); // Encoding 
     in.close(); 
    } catch (IOException ex) { 
     text = "Read Error"; 
    } 
} 

쓰기 :

OutputStream stream = fs.openOutputStream(textFile); 
stream.write(content.getBytes("UTF-8")); 
stream.close(); 

답변

2

readToString() 방법은 UTF-8 인코딩을 읽고 . ASCII/ANSI 인코딩 중 하나에서 파일을 인코딩 한 경우 UTF-8로 수정하거나 해당 인코딩을 지정해야합니다.

readUT F부터 DataInputStream은 인코딩 된 스트림 용으로 설계된 것과 텍스트 파일 용으로 설계된 것과 완전히 다릅니다. DataInputStream은 일반적으로 Java의 텍스트 파일 용으로 설계되지 않았으므로, 그 종류의 내용에는 Reader/InputStreamReader을 사용해야합니다.

getBytes()은 플랫폼 특정 인코딩을 사용하며, 거의 사용자가 원하는 것은 getBytes(String)이어야합니다.

+0

도움 주셔서 감사합니다. :) –