⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7.txt

📁 本书属于《开发专家之 Sun ONE》系列丛书
💻 TXT
📖 第 1 页 / 共 2 页
字号:
		//创建顺序输入流
		SequenceInputStream seqInput = new SequenceInputStream(fFilter);
		//创建输出文件对象
		FileOutputStream fOutput = new FileOutputStream(“SourceSum”);
		//每次读取的字符
		int bContent;
		//从文件输入流中读取内容
		while((bContent = seqInput.read())!=-1)
		{
			//写出到文件输出对象
			fOutput.write(nContent);
		}
		//关闭顺序输入流
		seqInput.close();
		//关闭文件输出对象
		fOutput.close();
	}
}
class FileFilter implements Enumeration
{
	File directory;
	String extension;
	String strFileList[];
	Filter filter;
	int nCounter;
	//构造方法
	FileFilter(String strDirectoryName,String extension)
	{
		this.extension = extension;
		//创建目录对象
directory = new File(strDirectoryName);
		if(directory.isDirectory())
		{
			//如果是目录,获取目录中所有文件
			filter = new Filter(extension);
			strFileList = directory.list(filter);
		}	
			else
			{
				//如果不是目录,获取当前文件
				strFileList = new String[1];
				strFileList[0] = strDirectoryName;
			}
			nCounter = 0;
	}
	//判断枚举中十分还有元素的方法
	public Boolean hasMoreElements()
	{
		if(nCounter<strFileList.length)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	//获取枚举中下一元素的方法
	public Object nextElement()
	{
		//如果还有元素
		if( hasMoreElements())
		{
			nCounter++;
			//返回文件输入流对象
			return new FileInputStream(strFileList[nCounter-1]);
		}
		else
			return null;
	}
}



例程7-11
//FilterWalker.Java
import Java.io.*;
import Java.util.*;
class FilterWalker implements Observer
{
    String[] patterns;
    File dir;
        FilterWalker (String dirname, String[] patterns) 
{
        dir = new File(dirname);
        this.patterns = patterns;
        // Start walking the file system.
        FileWalker fw = new FileWalker();
        fw.addObserver(this);
        fw.walk(new File(dirname), false, new FileFilter());
    }
    class FileFilter implements Java.io.FileFilter
{
        // Returns true if filename matches one of the patterns.
        public boolean accept(File file)
{
            if (file.isDirectory()) 
{
                return true;
            }
            String s = file.getName();
            if (patterns.length == 0) {
                return true;
            } else {
                for (int i=0; i<patterns.length; i++) {
                    if (s.endsWith(patterns[i])) {
                        return true;
                    }
                }
            }
            return false;
        }
    }
    // This method is called for each file that the file walker discovers.
    public void update(Observable o, Object arg) {
        System.out.println(arg);
    }
    public static void main(String[] args) {
        if (args.length < 1) {
            System.err.println(
                "Usage: Java Main <directory> [<pattern>...]");
        } else {
            // Retrieve patterns, if any.
            String[] patterns = new String[args.length-1];
            System.arraycopy(args, 1, patterns, 0, patterns.length);
            new Main(args[0], patterns);
        }
    }
}
//FileWalker.Java
import Java.io.*;
import Java.util.*;
import Java.util.zip.*;
class FileWalker extends Observable
{
    void walk(File dir, boolean includeDirectories, FileFilter filter)
{
        if (dir.isDirectory()) {
            if (includeDirectories) {
                setChanged();
                notifyObservers(dir);
            }
            File[] files = dir.listFiles(filter);
            if (files != null) {
                for (int i=0; i<files.length; i++) {
                    walk(files[i], includeDirectories, filter);
                }
            }
        } else {
            setChanged();
            notifyObservers(dir);
        }
    }
}



例程7-12
//DataIOTest.Java
import Java.io.*;
public class DataIOTest
{
    public static void main(String[] args) throws IOException
{
        //创建数据输出流
        DataOutputStream out = new DataOutputStream(new
				   FileOutputStream("content.txt"));
		//初始化输出数据
        double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 };
        int[] units = { 12, 8, 13, 29, 50 };
        String[] descs = {
   "Java T-shirt",
			   "Java Mug",
			   "Duke Juggling Dolls",
			   "Java Pin",
			   "Java Key Chain" 
};
        //数据输出
        for (int i = 0; i < prices.length; i ++)
{
            out.writeDouble(prices[i]);
            out.writeChar('\t');
            out.writeInt(units[i]);
            out.writeChar('\t');
            out.writeChars(descs[i]);
            out.writeChar('\n');
        }
		//关闭数据输出流
        out.close();
        //创建数据输入流
        DataInputStream in = new DataInputStream(
           new	 FileInputStream("content.txt"));

        double price;
        int unit;
        String desc;
        double total = 0.0;
        try 
{
	//利用数据输入流读文件内容
            while (true)
{
                price = in.readDouble();
                in.readChar();       // throws out the tab
                unit = in.readInt();
                in.readChar();       // throws out the tab
                desc = in.readLine();
                System.out.println("You've ordered " +
				    unit + " units of " +
				    desc + " at $" + price);
                total = total + unit * price;
            }
        } 
		//捕获异常
catch (EOFException e)
{
		e.printStackTrace();
        }
        System.out.println("For a TOTAL of: $" + total);
		//关闭数据输入流
        in.close();
    }
}



例程7-13
// DataIOException.Java
import Java.io.*;
class DataIOException
{
	public static void main(String args[])
	{
		//利用文件输入流创建数据输入流
		DataInputStream dis = new DataInputStream(
						New FileInputStream(“DataIOException.Java”));
		byte b;
		try
		{
			//读文件的内容并打印出来
			while(true)
			{
				b = dis.readByte();
				System.out.println((char)b);
				System.out.flush();
			}
		}
		//捕获文件结束异常
		catch(EOFException e1)
		{
			System.out.println(e1);
		}
		//捕获文件不存在异常
		catch(FileNotFoundException e2)
		{
			System.out.println(e2);
		}
		//捕获文件输入输出异常
		catch(IOException e3)
		{
			System.out.println(e3);
		}
		//处理其他异常
		catch(Throwable anything)
		{
			System.out.println(anything);
		}
	}
}



例程7-14
//BufferedInputDemo.Java
class BufferedInputDemo
{
	public static void main(String args[])
	{
		//创建与文件输入流对应的缓冲区输入流
		BufferedInputStream bis = new BufferedInputStream(
						new FileInputStream(“BufferedInputDemo.Java”));
		int b;
		try
		{
			//从缓冲区输入流中读数据
			while((b=bis.read())!=-1)
			{
				System.out.println((char)b);
			}
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
	}
}



例程7-15
//LineNumberDemo.Java
class LineNumerDemo
{
	public static void main(String args[])
	{
		//定义数据输入流
		DataInputStream dis;
		//定义文件输入流
		FileInputStream fis;
		//定义缓冲区输入流
		BufferedInputStream bis;
		//定义行号输入流
		LineNumberInputStream lnis;
		String strLine;
		
		Try
		{
			//创建文件输入流对象,与实际文件相连
			fis = new FileInputStream(“LineNumberDemo.Java”);
			//根据文件输入流对象创建缓冲区输入流
			bis = new BufferedInputStream(fis);
			//根据缓冲区输入流对象创建行号输入流
			lnis = new LineNumberStream(bis);
			//根据行号输入流创建数据输入流
			dis = new DataInputStream(lnis);
			//从数据输入流中读数据
			while((strLine=dis.readLine())!=null)
			{
				//从行号输入流中取得行号
				int nLineNumber = lis.getLineNumber();
				//打印出行号和当前行内容
				System.out.println(nLineNumer+”:”+strLine);
			}
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			//关闭数据输入流
			dis.close();
		}
	}
}



例程7-16
//FileCopy.Java
//自定义异常
class FileCopyException extends IOException
{
	public FileCopyException(String msg)
	{
		//调用父类的构造函数
		super(msg);
	}
}
//FileCopy类
public class FileCopy
{
	public static void copy(String sourcename,String destname) 
throw IOException
	{
		//创建源文件对象
		File sourcefile = new File(sourcename);
		//创建目标文件对象
		File destfile   = new File(destname);
		//定义文件输入流
		FileInputStream   source= null;
		//定义文件输出流
		FileOutputStream  dest = null;
		byte[] buffer;
		int    readbytes;
		try
		{
			//判断文件十分存在、是否为普通文件
	if(!sourcefile.exists() || !sourcefile.isFile())
				throw new FileCopyException("No such file:"+sourcename+"\n");
			//判断是否具有写权限
			if(!sourcefile.canRead())
				throw new FileCopyException(sourcename+"cann’t be read\n");
			//判断目标文件存在
			if(destfile.exists())
			{
				//目标文件是普通文件
				if(destfile.isFile())
				{
					//定义数据输入流
					DataInputStream in = new DataInputStream(System.in);
					String response;
					if(!destfile.canWrite())throw new
 FileCopyException(destname+"does not can write\n");
					System.out.println("Overwrite (Yes/No) ?");
					System.out.flush();
					//读取输入内容
					response = System.in.readline();
				}
				else
				{
					System.out.println(“不能对目录进行读写”);
				}
			}
			else
			{
				System.out.println(“指定的文件不存在”);
			}
			//创建文件输入对象
			source = new FileInputStream(sourcefile);
			//创建文件输出对象
			destination = new FileOutputStream(destfile);
			buffer = new byte[1024];
			//文件输出
			for(;;)
			{
				readbytes = source.read(buffer);
				if(readbytes==-1)break;
				destination.write(buffer,0,readbytes);
			}
		}
		finally
		{
			if(source!=null)
			{
				try
				{
					source.close();
				}
				catch(IOException e){};
			}
			if(destination!=null)
			{
				try
				{
					destination.close();
				}
				catch(IOException e){};
			}
		}
	}
	public static void main(String args[])
	{
		if(args.length!=2)
			System.out.println("Java FileCopy <SourceFile> <DestFile>");
		else
		{
			try
			{
				copy(args[0],args[1]);
			}
			catch(IOException e)
			{
				System.out.println(e.getMessage());
			}
		}
	}
	
	private static File parent(File f)
	{
		String dirname = f.getParent();
			if(f.isAbsolute())
				return new File(File.seperator);
			else
				return new File(System.getProperty("user.dir"));
	}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -