2011-02-02 12 views
0

Flexからファイルを読み取る際に問題が発生しています。このファイルには、base64でエンコードされた文字列が含まれています。私がファイルを読み込むと、長さが47856、デコードされたbase64バイト配列の長さが34157になります。Flexファイルの読み取りに関する問題

私は同じファイルをjavaから読み込むと、それぞれ長さが48068と35733になります。

何が問題ですか?

private function init():void{ 
     var file:File = File.desktopDirectory.resolvePath("Files/sample.txt"); 
     stream = new FileStream(); 
     stream.open(file, FileMode.READ); 
     var str:String = stream.readUTFBytes(stream.bytesAvailable); 
     stream.close(); 
     str = str.replace(File.lineEnding, "\n"); 
     contents.text = str; 
     fileName.text = file.name; 
    } 


public function playSound(contents:String):void{ 



    try{ 
     var byteData: ByteArray; 

     byteData = new ByteArray(); 
     byteData.writeUTFBytes(contents); 
     var dec:Base64Decoder = new Base64Decoder(); 
     dec.decode(contents); 
     byteData = dec.toByteArray(); 



     Alert.show("byte Array " + byteData.toString().length +" :: " +contents.length); 


    } 

これはファイルを読み込むための私のJavaコードです...私が期待している結果は、Java側で達成されています。私も、長さ

byte[] decodedBase64 = new byte[byteLength]; 
       String speexData = null; 
       try { 
        speexData = readFile(userDir +"//" +xmlFileName); 
       } catch (IOException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 

       // System.out.println("sa " + sa); 

       try{ 

        decodedBase64= Base64.decodeToByteArray(speexData); 
        System.out.println("decodednase64 length " + decodedBase64.length +" :: " +speexData.length()); 
       } 
       catch(Exception e){ 
       } 

答えて

0
あなたがそこにやっていることを示すためにJavaコードを掲示しなければならない

を印刷しています

private static String readFile(String path) throws IOException { 
     FileInputStream stream = new FileInputStream(new File(path)); 
     try { 
      FileChannel fc = stream.getChannel(); 
      MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); 

      return Charset.defaultCharset().decode(bb).toString(); } 
     finally {  stream.close(); 
     } 
    } 

Javaコード。

しかし、もっと分かりませんが、私は推測して、行末を置き換えるときに毎回バイトを削除している可能性があります(\ r \ nであればそれを\ n、例えば)。

+0

@above:投稿を編集しました – karthick

+0

行末を置き換える行を削除するとどうなりますか? – Kricket

+0

@above:同じです。文字列全体を削除しました... – karthick

関連する問題