日期:2014-05-20  浏览次数:20793 次

如何将网络文件读入char[]???
如题
要求:
1、不能用readLine()方法
2、不知道文件的大小

------解决方案--------------------
只要知道文件的编码就可以了。
1、创建足够大小的 byte[]
2、用 read 方法将文件读入(如果文件实在太大,可以考虑存为文件)
3、用编码转换成 String
4、取得 String 当中的 char。
------解决方案--------------------
import java.io.*;
import java.nio.*;
import java.nio.channels.FileChannel;
public class ReadAString {

/**
* @param args
*/
public static void main(String[] args) {
File inFile = new File( "D:/jdk/src/java/write.txt ");
FileInputStream inStream = null;
try {
inStream = new FileInputStream(inFile);
} catch(FileNotFoundException e) {
e.printStackTrace(System.err);
}
FileChannel inChannel = inStream.getChannel();
ByteBuffer buffer=null;
char[] cArray=null;
try{
buffer = ByteBuffer.allocate((int)inChannel.size());
cArray=new char[(int) (inChannel.size()/2)];
}catch(IOException e){
e.printStackTrace(System.err);
}
try {
while(inChannel.read(buffer) != -1) {
buffer.flip();
CharBuffer cbuffer=buffer.asCharBuffer();
cbuffer.get(cArray);
for(char c:cArray){
System.out.printf( "%s ",c);
}
buffer.clear();
}
System.out.println();
System.out.println( "OK,SUCCESS! ");
inStream.close();
} catch(IOException e) {
e.printStackTrace(System.err);
}
}
}

搞定.
------解决方案--------------------
StringBuffer strobject = new StringBuffer( );
for (int c = in.read(); c != -1; c = in.read( )) {
strobject.append((char) c);
}
strobject.toString(); // 转换成string 类型.

晕,是读网络.
换成上面的看行不行.
用in.available();这个一次返回的值,正常情况下肯定不完整,
所以读网络不要用avai...来算大小.