java中文件读取的缓存问题

代码如下:packageZiJieLiuZiFuLiu02;importjava.io.File;importjava.io.FileInputStream;import... 代码如下:
package ZiJieLiuZiFuLiu02;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

public class ZiJieLiuZiFuLiu02 {

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
File f=new File("d:"+File.separator+"fly.txt");
InputStream input=new FileInputStream(f);

byte b[]=new byte[1024];
int len=0;
int temp=0;
while((temp=input.read())!=-1)
{
b[len]=(byte)temp;
len++;
}
input.close();
System.out.println(new String(b,0,len));
}

}
其中byte b[]=new byte[1024];这句定义的是数组的长度,如果超过长度该怎么处理,java不支持数组大小动态变化吧?
b[len]=(byte)temp;这句如果temp超过1024咋整?求解释,谢谢!
展开
 我来答
水冰天之痕
推荐于2017-12-16 · TA获得超过716个赞
知道小有建树答主
回答量:1254
采纳率:50%
帮助的人:1167万
展开全部
read方法又不止一个……

public int read(byte[] b)
throws IOException

从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b
中。以整数形式返回实际读取的字节数。在输入数据可用、检测到文件末尾或者抛出异常前,此方法一直阻塞。
如果 b 的长度为 0,则不读取任何字节并返回
0;否则,尝试读取至少一个字节。如果因为流位于文件末尾而没有可用的字节,则返回值
-1;否则,至少读取一个字节并将其存储在 b 中。
zqhmfk
2013-05-25 · TA获得超过176个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:102万
展开全部
很负责任告诉你写的代码有问题,首先说你的程序吧byte[] b=new byte[1024] 它的含义和目的就相当于你要去河里挑水到缸里,而这句语句就相当于给你一个桶子。河里的水相当于那你要读取的文件,而缸就相当于要写入的文件。所以你的while语句条件该改为while((temp=input.read(b)!=-1)这句语句相当于一个字节一个字节读取。而大括号里面一般执行写操作如{out.write(b , 0 , temp);}
在这里还要纠正楼上的说“超过长度,它会自动增加长度的!”这是错误的,数组一旦初始化长度就固定了。长度会增长的应该是ArrayList集合
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
推荐于2016-06-20 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1738万
展开全部
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // ●判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Q豆芽life
2013-05-25 · 超过17用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:41.2万
展开全部
超过了就是抛出数组越界异常,所以数组长度不能写死,应为文件的大小为f.length
当然这样文件也不能太大,否则很慢,你可以使用BufferedInputStream这个流可以一次读一个Byte数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
依海宁0J197b
2013-05-25
知道答主
回答量:14
采纳率:0%
帮助的人:11.6万
展开全部
这个你不用担心的啊??超过长度,它会自动增加长度的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式