2012-05-11 5 views
0

ファイルチャネルを使用して大きなxmlファイルを読み取ろうとしています。ここではサンプルコードは​​3210です。私が試してみると、認識できない文字が表示されています: import java.io.File; import java.io.File; import java.io.FileInputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel;ファイルチャネルを使用してテキストファイルを読み取るときに不正な文字が返される

public class MainClass { 
    public static void main(String[] args) throws Exception { 
    File aFile = new File("charData.xml"); 
    FileInputStream inFile = null; 

    inFile = new FileInputStream(aFile); 

    FileChannel inChannel = inFile.getChannel(); 
    ByteBuffer buf = ByteBuffer.allocate(48); 

    while (inChannel.read(buf) != -1) { 
     System.out.println("String read: " + ((ByteBuffer) (buf.flip())).asCharBuffer().get(0)); 
     buf.clear(); 
    } 
    inFile.close(); 
    } 
} 

出力:

String read: ⸮ 
String read: ⸮ 
String read: ⸮ 
String read: ⸮ 
String read: ⸮ 
String read: ⸮ 
String read: ⸮ 
String read: ⸮ 
String read: ⸮ 

あなたがここに何を欠場しましたか? おかげで、

デビッド

答えて

0

あなたは、この作品のおかげで、この

import java.util.*; 
import java.io.*; 
import java.nio.*; 
import java.nio.channels.*; 
import java.nio.charset.*; 

public class Buffer 
{ 
    public static void main(String args[]) throws Exception 
    { 
     String inputFile = "charData.xml"; 
     FileInputStream in = new FileInputStream(inputFile); 
     FileChannel ch = in.getChannel(); 
     ByteBuffer buf = ByteBuffer.allocateDirect(BUFSIZE); // BUFSIZE = 256 

     Charset cs = Charset.forName("ASCII"); // Or whatever encoding you want 

     /* read the file into a buffer, 256 bytes at a time */ 
     int rd; 
     while ((rd = ch.read(buf)) != -1) { 
      buf.rewind(); 
      System.out.println("String read: "); 
      CharBuffer chbuf = cs.decode(buf); 
      for (int i = 0; i < chbuf.length(); i++) { 
       /* print each character */ 
       System.out.print(chbuf.get()); 
      } 
      buf.clear(); 
     } 
    } 
} 
+0

を試してみてください!別の質問:ここでバイトサイズの問題は起こりますか?私はそれを増やすとパフォーマンスが向上しますか? –

+0

実際には認識できない文字はありませんでしたが、行単位でファイルを読み取っていません –

+0

@DavidZhaoしかし、問題はそれが私が解決した迷惑文字を返す理由です。 –

関連する問題