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~~