2011-02-02 87 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端實現。

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代碼的我在哪裏打印長度

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代碼,以顯示自己在做什麼都有,還有。但是,如果不知道更多,我可以猜測並說,當您替換行尾時,您可能每次都刪除一個字節(如果它是\ r \ n並且您正在創建它\ n,例如)。

+0

@上一篇:我編輯了我的帖子 – karthick 2011-02-02 09:20:09