这是将一个文件的数据复制到第二个文件的代码
public class Writer
{
public static void main(String args[]) throws IOException
{
File f=new File("D:/test.txt");
FileReader fr=new FileReader(f);
char cbuff[]=new char[100];
int c=fr.read(cbuff);
System.out.println(c);
c=fr.read(cbuff);
System.out.println(c);
fr.close();
FileWriter fw=new FileWriter("D:/newTest.txt");
fw.write(cbuff);
fw.close();
}
}
输出为
67个
-1
我的第一个问题是
我想知道char数组的大小是1000,那么为什么read方法第二次返回-1。
我的第二个问题是
加。至[Java Docs](http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html#read%28java.nio.CharBuffer%29)
如果此字符源位于其末尾,则或-1
上述行的含义是什么?
答案 0 :(得分:1)
当你这样做时:
fr.read(cbuff);
由于您只有67
个字符,因此您已经读取了整个文件,因此下次光标位于文件末尾时,它将返回-1
。在另一个世界里,没有什么可读的。
答案 1 :(得分:1)
我想知道char数组的大小是1000,那么为什么read方法第二次返回-1。
因为输入流不包含要读取的字符。请注意,如果有第二次读取,则会覆盖已读入数组的内容。
你的javadoc指向了错误的方法。您使用the read()
method taking a char[]
as an argument。 CharBuffer
不是char[]
!
最后(你最近问了一个关于这个问题的问题,我已经告诉你了),你应该指定你用来读取文件和写入文件的编码。
答案 2 :(得分:1)
当你第一次通过 fr.read(cbuff)阅读时,它正在读取文件中的字符,并且总字符数为67,所以它显示67现在光标移动到下次当你结束文件时正在阅读然后发现 EOF 这就是为什么返回-1。