javaIO实例

来源:互联网 发布:excel成绩分析软件 编辑:程序博客网 时间:2024/04/30 10:59

源码:

//FileInputStream和FileOutputStream的实例

public static void main(String[] args) {FileIOTest ft=new FileIOTest();String path="./file/";File f=new File(path);if(!f.exists()){f.mkdirs();}f=new File(path+"test.jpg");if(!f.exists()){try {f.createNewFile();} catch (IOException e) {e.printStackTrace();}}//将控制台的数据记录到文件中/*String line="";do{Scanner scanner=new Scanner(System.in);System.out.println("输入exit退出!请输入你需要记录的数据:");line=scanner.nextLine();FileOutputStream fos=null;try {if(!line.equals("exit")){fos=new FileOutputStream(f,true);//OutputStream类及其子类操作的是字节byte,所以用byte数组来接收byte b[]=(line+"\r\n").getBytes();fos.write(b);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {if(fos!=null){fos.close();}} catch (IOException e) {e.printStackTrace();}}}while(!line.equals("exit"));*///从文件读出,并打印出来/*FileInputStream fis=null;try{fis=new FileInputStream(f);byte b[]=new byte[1024];int val=0;while((val=fis.read(b))!=-1){System.out.println(new String(b,0,val));}}catch(Exception e){e.printStackTrace();}finally{if(fis!=null){try {fis.close();} catch (IOException e) {e.printStackTrace();}}}*///拷贝图片File imgFile=new File("./images/");if(!imgFile.exists()){imgFile.mkdirs();}imgFile=new File("./images/copy.jpg");ft.copyFile(f, imgFile);}//拷贝文件public void copyFile(File input,File output){FileInputStream fis=null;FileOutputStream fos=null;try {fis=new FileInputStream(input);fos=new FileOutputStream(output);byte b[]=new byte[1024];int i=0;while((i=fis.read(b))!=-1){fos.write(b, 0, i);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {if(fis!=null){fis.close();}if(fos!=null){fos.close();}} catch (IOException e) {e.printStackTrace();}}}

//FileReader和FileWriter类的实例

public static void main(String[] args) {//FileReader,FileWriterFileReader fr=null;FileWriter fw=null;/*try {fr=new FileReader("./file/test.txt");fw=new FileWriter("./images/copy_test.txt");//FileReader 操作的是字符char,因此只能用char数组接收char ch[]=new char[1024];int n=0;while((n=fr.read(ch))!=-1){System.out.println(new String(ch,0,n));fw.write(ch, 0, n);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {if(fw!=null){fw.close();}if(fr!=null){fr.close();}} catch (IOException e) {e.printStackTrace();}}*///BufferedReader和BufferedWriter实例 BufferedReader br=null;BufferedWriter bw=null;try {fr=new FileReader("./file/test.txt");br=new BufferedReader(fr);fw=new FileWriter("./images/copy_test.txt");bw=new BufferedWriter(fw);//BufferedReader最大的优势就是直接操作字符串String,它可按行读取,效率最高String line="";while((line=br.readLine())!=null){System.out.println(line);bw.write(line+"\r\n");//readLine方法不会读取换行符}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {if(bw!=null){bw.close();}if(br!=null){br.close();}if(fw!=null){fw.close();}if(fr!=null){fr.close();}} catch (IOException e) {e.printStackTrace();}}}


javaIO使用方法总结:

1.InputStream,OutputStream类及其子类处理的都是字节,用byte的数组接收,此类将数据记录到byte这个数组中,然后转化这个数组即可。

2.Reader,Writer类及其子类处理的是字符char,用char的数组接收,此类将数据记录在char这个数组上,然后操作这个char数组即可。

3.BufferedReader,BufferedWriter操作的是String,用String直接接收,且提供方便的readLine方法,效率较高。