站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题高手进来帮忙看看有关JAVA的IO

高手进来帮忙看看有关JAVA的IO

摘要: 高手进来帮忙看看有关JAVA的IO


问题一:以下的代码运行后,会多输一些东西了,看了就知道,这是什么原因,是因为所开的缓冲区buffer小了吗?我试过将buffer加大为1024就正常啦。
问题二:如何获取文件的长度-。-
import java.io.*;
public class OpenFile
{
private String fileName="OpenFile";
//private File file;
public static void main(String args[]) throws IOException
{
try
{
FileInputStream rf=new FileInputStream("OpenFile.java");
int n=512;
//file=new File(fileName);
//file.length();
byte buffer[]=new byte[n];
while((rf.read(buffer,0,n)!=-1)&&(n>0))
{
System.out.print(new String(buffer));
}
System.out.println();
rf.close();
}
catch(IOException ioe)
{
System.out.println(ioe);
}
catch(Exception e)
{
System.out.println(e);
}
}
}


高手帮个忙哈-。-


你把while((rf.read(buffer,0,n)!=-1)&&(n>0))
{
System.out.print(new String(buffer));
}
改为while((int b=rf.read(buffer,0,n)!=-1)&&(n>0))
{
System.out.print(new String(buffer,0,b));
}



不行哦,改了后编译出错。
自己顶:)


我是一个学JAVA 的大学生,想咨询一下关于它的学习方法?请大师赐教?


while((int b=rf.read(buffer)!=-1)&&(n>0))
{
System.out.print(new String(buffer,0,b));
}



1:buffer在第二次读取的时候没有清除第一次读出来的内容,所以会出现多些东西的情况.
改成
while((rf.read(buffer,0,n)!=-1)&&(n>0))
{
System.out.print(new String(buffer));
buffer = new byte[n] ;
}

就可以了.
2:rf.available()可以获得文件的长度.


你把while((rf.read(buffer,0,n)!=-1)&&(n>0))
{
System.out.print(new String(buffer));
}
改为
int b;
while(( b=rf.read(buffer,0,n)!=-1)&&(n>0))
{
System.out.print(new String(buffer,0,b));
}
就可以了.



谢谢大家,谢谢freewilling,问题解决啦^_^


↑返回目录
前一篇: erlang_b公式计算的问题
后一篇: [高分]求JavaDOCHelper的注册码