请问FileWriter类的close方法会自动调用flush方法么
小弟写下面程序时除了问题,请诸位高手指教 先谢谢啦!/*
功能:
利用FileReader 读取一个文件的内容
再利用FileWriter 将读取的内容写入另一文件中
即 利用FileReader 和 FileWriter 完成文件的复制 本程序的问题是:
如果不调用FileWriter的close方法,则就会写入失败,
FileWriter类的close方法会自动调用flush方法么?
具体参见下面程序
*/import java.io.*;public class Test1
{
//统计name所代表的文件中的字符的个数!
public static int CountCharacterFile(String name)
{
int cnt = 0; try
{
//int cnt = 0;
int ch;
FileReader fr = new FileReader(name);
while (-1 != (ch=fr.read()))
{
cnt++;
}
fr.close();
}
catch (FileNotFoundException e)
{
System.out.println("文件没有找到!");
}
catch (IOException e)
{
System.out.println("文件读取失败!");
} return cnt;
}
public static void main(String[] args)
{
FileReader fr = null;
FileWriter fw = null;
int cnt = 0; try
{
fr = new FileReader("C:\\Documents and Settings\\others\\桌面\\java\\TestFileReader1.java");
fw = new FileWriter("d:/share/java/dabaichi.java");
int ch; while (-1 != (ch=fr.read()))
{
//System.out.print((char)ch);
fw.write(ch);
cnt++;
}
System.out.printf("总共读取了%d个字节的数据\n", cnt);
//fr.close();
//fw.close(); //55行
}
catch (FileNotFoundException e)
{
System.out.println("找不到文件!");
System.exit(-1);
}
catch (IOException e)
{
System.out.println("文件读取失败!");
System.exit(-1);
} System.out.println("复制到的文件中的字符个数是: " + CountCharacterFile("d:/share/java/dabaichi.java") );
}
}
/*
如果55行不被注释掉,则在JDK 1.6中的运行结果是:
----------------------------------
总共读取了605个字节的数据
复制到的文件中的字符个数是: 605
----------------------------------
打开d:/share/java/dabaichi.java文件 发现复制成功
如果55行被注释掉,则在JDK 1.6中的运行结果是:
----------------------------
总共读取了605个字节的数据
复制到的文件中的字符个数是: 0
----------------------------
打开d:/share/java/dabaichi.java文件 发现文件是空的
*/
小弟写下面程序时除了问题,请诸位高手指教 先谢谢啦!/*
功能:
利用FileReader 读取一个文件的内容
再利用FileWriter 将读取的内容写入另一文件中
即 利用FileReader 和 FileWriter 完成文件的复制 本程序的问题是:
如果不调用FileWriter的close方法,则就会写入失败,
FileWriter类的close方法会自动调用flush方法么?
具体参见下面程序
*/import java.io.*;public class Test1
{
//统计name所代表的文件中的字符的个数!
public static int CountCharacterFile(String name)
{
int cnt = 0; try
{
//int cnt = 0;
int ch;
FileReader fr = new FileReader(name);
while (-1 != (ch=fr.read()))
{
cnt++;
}
fr.close();
}
catch (FileNotFoundException e)
{
System.out.println("文件没有找到!");
}
catch (IOException e)
{
System.out.println("文件读取失败!");
} return cnt;
}
public static void main(String[] args)
{
FileReader fr = null;
FileWriter fw = null;
int cnt = 0; try
{
fr = new FileReader("C:\\Documents and Settings\\others\\桌面\\java\\TestFileReader1.java");
fw = new FileWriter("d:/share/java/dabaichi.java");
int ch; while (-1 != (ch=fr.read()))
{
//System.out.print((char)ch);
fw.write(ch);
cnt++;
}
System.out.printf("总共读取了%d个字节的数据\n", cnt);
//fr.close();
//fw.close(); //55行
}
catch (FileNotFoundException e)
{
System.out.println("找不到文件!");
System.exit(-1);
}
catch (IOException e)
{
System.out.println("文件读取失败!");
System.exit(-1);
} System.out.println("复制到的文件中的字符个数是: " + CountCharacterFile("d:/share/java/dabaichi.java") );
}
}
/*
如果55行不被注释掉,则在JDK 1.6中的运行结果是:
----------------------------------
总共读取了605个字节的数据
复制到的文件中的字符个数是: 605
----------------------------------
打开d:/share/java/dabaichi.java文件 发现复制成功
如果55行被注释掉,则在JDK 1.6中的运行结果是:
----------------------------
总共读取了605个字节的数据
复制到的文件中的字符个数是: 0
----------------------------
打开d:/share/java/dabaichi.java文件 发现文件是空的
*/
答:我想楼主不应该问这个问题.我的意思是:写程序有一个好习惯,比什么都好.因此:楼主似乎应该自己主动在代码中写上:
out.flush();
out.close();这是好的代码习惯,为何不这样去写呢?关于你的问题,我也没法回答,因为我没有看源代码,也确实不知道.以上仅供你参考.
out.close();
必须得写的
两者你写一个就可以立了》