Java练手题之七IO编程

来源:互联网 发布:音频去噪音软件 编辑:程序博客网 时间:2024/06/05 03:09

1.编写程序,列出给定路径下的文件名和目录文件名

import java.lang.*;import java.util.ArrayList;import java.io.*;class my{  public static void main(String args[]){  try{  File file=new File(args[0]);  if(file.isFile()){  System.out.println(args[0]+" 文件");  System.out.print(file.canRead()?"可读":"不可读");  System.out.print(file.canWrite()?"可写":"不可写");  System.out.println(file.length()+"字节");  }  else{  File[] files=file.listFiles();  ArrayList<File> fileList=new ArrayList<File>();  for(int i=0;i<files.length;i++){  if(files[i].isDirectory()){  System.out.println("["+files[i].getPath()+"]");      }  else{  fileList.add(files[i]);  }   }  for(File f:fileList){  System.out.println(f.toString());  }  System.out.println();  }  }  catch(ArrayIndexOutOfBoundsException e){  System.out.println("using : java FileDemo Pathname");  }  }}

2.进行文件的复制

    ①利用FileInputStream和FileOutputStream,中间用一个byte数组作为缓冲

  

import java.lang.*;//import java.util.ArrayList;import java.io.*;public class my{   public static void main(String args[]){     try{       byte[] buffer=new byte[1024];       FileInputStream fileInputStream=new FileInputStream(new File(args[0]));       FileOutputStream fileOutputStream=new FileOutputStream(new File(args[1]));       System.out.println("复制文件"+fileInputStream.available()+"字节");       while(true){          if(fileInputStream.available()<1024)          {            int remain=-1;            while((remain=fileInputStream.read())!=-1){              fileOutputStream.write(remain);              }            break;            }          else{            fileInputStream.read(buffer);             fileOutputStream.write(buffer);          }         }         fileInputStream.close();         fileOutputStream.close();         System.out.println("复制完成");        }         catch(ArrayIndexOutOfBoundsException e){      System.out.println("using : java FileStreamDemo src des");       e.printStackTrace();      }     catch(IOException e ){      e.printStackTrace();      }   }}
②缓冲用BufferedInputStream和BufferedOutputStream代替

import java.io.*;public class my{   public static void main(String args[]){     try{     byte[] data=new byte[1];     File srcFile=new File(args[0]);     File desFile=new File(args[1]);     BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(srcFile));     BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(desFile));     System.out.println("copy file"+srcFile.length()+"bytes");     while(bufferedInputStream.read(data)!=-1)    {    bufferedOutputStream.write(data);    }     bufferedOutputStream.flush();          bufferedInputStream.close();     bufferedOutputStream.close();     System.out.println("copy completed!");     }     catch(ArrayIndexOutOfBoundsException e){     System.out.println("using : java UseFileStream src des");     e.printStackTrace();     }     catch(IOException e ){     e.printStackTrace();     }   }}

3.其他

   将代码编写在txt中,编译的时候,出现了GBK映射的问题,将命令改为如下javac -encoding utf-8 **.java,发现又出现了非法字符:\65279的问题,很郁闷~~我把代码拷贝到MyEclipse中,可以编译通过,原来MyEclipse的jdk和我在cmd下的jdk机制不一样,最后解决的方法就是用EltraEdit将txt格式的代码保存为UTF8-无BOOM,最后编译通过,执行ok~~

原创粉丝点击