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

📄 perpetualreader0.java

📁 ALGAE是一个快速创建算法演示的框架。目前支持的算法实现语言包括java和c
💻 JAVA
字号:
/**
 * PerpetualReader.java
 *
 *
 * Created: Wed Sep 22 1999
 *
 * @author Steven J. Zeil
 * @version
 */

package edu.odu.cs.zeil.AlgAE.Client;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.Reader;

import java.net.URL;

import edu.odu.cs.zeil.AlgAE.Debug;

/**
 * PerpetualReader is a buffered input file that reopens the file,
 * restarting from the beginning, after each time it hits end-of-file.
 */

public class PerpetualReader extends Reader
{
    private String fileName;
    private BufferedReader reader;
    private int resetLimit;
    private int resetCount;
    

    /**
     * Create a buffering character-input stream that restarts
     * at the beginning after reaching end-of-file.
     *
     * @param theFileName Name of file to open
     * @param maxPasses Number of passes to make over file. If 0,
     *          make infinite passes until file is closed.
     */
    public PerpetualReader(String fileNameOrURL, int maxPasses)
	throws java.io.FileNotFoundException, java.io.IOException
    {
	fileName = fileNameOrURL;
	openReader();
	resetLimit = maxPasses;
	resetCount = 0;
    }
    

    /**
     * Read a single character. This method will block until a character
     * is available, an I/O error occurs, or the end of the stream is
     * reached.
     *
     * @returns The character read, as an integer in the range 0 to
     *    16383 (0x00-0xffff), or -1 if the file is empty
     */
    public int read()
	throws java.io.FileNotFoundException, java.io.IOException
    {
	int c = reader.read();
	if (c < 0)
	    {
		reader.close();
		openReader();
		c = reader.read();
	    }
	//Debug.show (Debug.clientread, "read " + c);
	return c;
    }
    

    /**
     * Read characters into a portion of an array. 
     *
     * @param cbuf  Destination buffer
     * @param off   Offset at which to start storing characters
     * @param len   Maximum number of characters to read 
     *
     * @returns The number of characters read, or -1 if the file is empty
     */
    public int read(char[] cbuf, int off, int len)
	throws java.io.IOException
    {
	for (int i = 0; i < len; ++i)
	    {
		cbuf[i+off] = (char)reader.read();
		if (cbuf[i+off] < 0)
		    return -1;
	    }
	return len;
    }
    

    /**
     * Close the stream.
     */
    
    public void close() throws java.io.IOException
    {
	reader.close();
    }



    /**
     * Open as a file or as a URL
     */
    private void openReader()
	throws java.io.FileNotFoundException, java.io.IOException
    {
	if ((resetLimit == 0) || (resetCount < resetLimit))
	  {
	    ++resetCount;
	      
	    boolean isURL =  (fileName.indexOf("://") >= 0)
		|| (fileName.indexOf("file:") == 0);
	    
	    // First, read the source code
	    reader = null;
	    try {
		if (isURL)
		    {
			URL url = new URL(fileName);
			reader = new BufferedReader
			    (new InputStreamReader (url.openStream()));
		    }
	    else
		reader = new BufferedReader (new FileReader (fileName));
	    }
	    catch (java.net.MalformedURLException e)
		{
		    throw new java.io.FileNotFoundException();
		}
	    Debug.show (Debug.clientread, "opened " + fileName);
	  }
    }
}

⌨️ 快捷键说明

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