<pre name="code" class="java">/*
*/
import java.io.*;
class MainClass
{
public static void main(String[] args) throws Exception
{
System.out.println("输入一个1到9的数字和重复次数,用空白符分隔:");
//具体prime.dat文件存放的路径,假设prime.dat是一个字符文件,就是用记事本打开不是一片乱码的那种。
//一片乱码的就是字节文件了。
//一定要确保prime.dat的路径都是真实存在的,否则运行时会挂掉,因为找不到路径。
String filepath = "d:\\myjava\\javatest\\prime.dat";
//创建文件对象,具体是读啊还是写啊先不管
File file = new File(filepath);
//如果已经存在则不创建,也不会改变内容;如果不存在则创建空白内容的文件。
//如果就是要读文件的话,必须先要判断文件存在与否:file.exists()。文件都没有还操作个啥。
//这里要用写,所以存不存在无所谓。
file.createNewFile();
//创建字符流的写对象, true表示在文件末尾追加,false表示先清空文件内容然后追加。
FileWriter filewriter = new FileWriter(file, false);
//创建一个字符数组,用来存放要写进prime.dat的内容,1024是该数组的长度。
// char[] chararr = new char[1024];
//也可以用字符串对象str来存放要写进prime.dat的内容。写之前要确保str不是null。
String str = null;
//创建写对象的缓冲对象,这一步可用可不用.缓冲吗就是用来优化的,不优化也是可以达到目的的。
BufferedWriter bufw = new BufferedWriter(filewriter);
//下面就开始写内容了,可以一次写完也可以用循环来写。用循环举例。
for(int i = 0; i <10 ; i++)//for里面的条件自己写,这里是为了编译通过乱写的)
{
//往chararr或者str里面放内容,具体放什么代码省略。
str = new String("Test");
//代表将chararr数组中从0脚标开始到数组长度脚标为止的内容写到文件中,自己指定写哪部分。
//bufw.write(chararr, 0, chararr.length);
bufw.write(str);
//用不用优化都一定要flush(),只有flush了才会真正写进文件里面。
bufw.flush();
//filewriter.write(chararr, 0, str.length);
//filewriter.write(str);
//filewriter.flush();
}
//文件写完了一定要close()
bufw.close();
//filewriter.close();
;
;
;
}
}
/*
*
字符文件 字节文件
文件对象 File File
流对象的读对象 FileReader InputStream
流对象的写对象 FileWriter OutputStream
流对象的读对象的缓冲对象 BufferedReader BufferedInputStream
流对象的写对象的缓冲对象 BufferedWriter BufferedOutputStream
将字节流对象转换成字符流对象的桥梁就是InputStreamReader,举例:键盘输入就是字节流对象,转换成字符流来操作(比如
键盘输入了什么字符了?输入了什么数字了?)
InputStreamReader insr = new InputStreamReader(System.in);
转换后操作insr就相当于操作FileReader的流程了。
同理将字符流对象转换成字节流对象的就是OutputStreamWriter。
归根到底计算机其实只认识字节,不认识字符。各种对字符文件的操作在最底层还是按照字节文件处理的。
*/