黑马程序员技术交流社区
标题:
io问题
[打印本页]
作者:
盛亚昆
时间:
2012-3-22 22:38
标题:
io问题
import java.io.*;
class FileReaderDemo4//读取
{
public static void main(String[] args) throws IOException
{
FileReader r=new FileReader("demo.txt");
//定义一个字符串数组。用于存储读到的字符。
//该read(char[])返回的是读到的字符个数
char[] buf=new char[1024];//设定字符数组的长度,一般定义数组长度为2kb?
//int num=r.read(buf);
int num=0;
while ((num=r.read(buf))!=-1)//当不等于-1是就打印读取
{
System.out.println(new String(buf,0,num));//new String(buf,0,num)是什么意思啊??
}
r.close();
}
作者:
万正
时间:
2012-3-22 22:54
new String(buf,0,num)就是把字节数组buf的第一个元素到第num个元素转换为字符串
作者:
lipanfeng
时间:
2012-3-22 23:06
利用String的构造函数将字符数组转换为字符串
作者:
Destiny
时间:
2012-3-22 23:08
本帖最后由 Destiny 于 2012-3-22 23:09 编辑
论坛挂了!!回复了10分钟都没回复上……{:soso_e105:}
1.char[] buf=new char[1024] 这读出的是字符,一个字符是2b 那么1024个字符自然就是2kB
2。System.out.println(new String(buf,0,num)); 输出 字符数组buf中的内容,用字符串表示。 这个方法是因为String 类的构造方法中有一个是String(char[] value ,int x,int y),表示从角标为x开始的y个元素用字符串表示。
作者:
盛亚昆
时间:
2012-3-22 23:39
我说的是哪个new 是什么意思啊
作者:
刘元霄
时间:
2012-3-22 23:43
;//new String(buf,0,num)
num 是read()的返回值 意思是有多少个。
意思就是 将buf转成字符串 从buf的0 角标开始 到有多少个 比如read 读取了 10个字符 那么String 存入就是10个字符。
否则直接储存buf 的话 他的长度就是 1024了 2KB 太浪费了!
作者:
李成
时间:
2012-3-23 00:18
盛亚昆 发表于 2012-3-22 23:39
我说的是哪个new 是什么意思啊
System.out.println(new String(buf,0,num)); 是缩写
String abc=new String(buf,0,num);
System.out.println(abc);
作者:
刘豪杰
时间:
2012-3-23 01:14
System.out.println(new String(buf,0,num));就是先把buf数组中的元素全部读出来,转换成字符串,然后打印出来。String(byte[] bytes, int offset, int length)
:通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。意思也就是把 byte[] bytes 这个数组中 从offset开始到 length长度的子数组元素全部取出,转换成String类型,new String只是new了一个对象
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2