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

📄 basicio.java

📁 一个非常简洁的java脚本引擎
💻 JAVA
字号:
package murlen.util.fscript;import java.io.*;import java.util.*;/** * <p>BasicIO - an simple IO Subclass of FScript</p> * <p> * <I>Copyright (C) 2000 murlen.</I></p> * <p> * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version.</p> * <p> * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details.</p> * * <p>You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA </p> * @author murlen\ *CVSTEST  */public class BasicIO extends FScript {        private Object files[];        /**Constructor*/    public BasicIO() {        super();        files=new Object[25];    }        /**     *<p> Overridden from FScript implements the following FScript functions </p>     *     * <p> note that this only provides very basic IO facilities,     * line by line read/write     * to files, and stdio read write.  There is a maximum of 25 open files</p>     * <p> <b>(void) println(param...)</b> - write to stdout -     * takes variable parameter list </p>     * <p> <b>string readln() </b> - reads a string from stdin </p>     * <p> <b>int open(string filename,string mode) </b> -     * opens a file 'filename' for     * reading (mode="r") or writing (mode="w") returns an integer which is     * used in future calls. Returns -1 on >25 files opened </p>     * <p> <b>string read(fp) </b> - reads one line from previously openened file     * </p>     * <p> <b>void write(fp,param...) - writes concatination of all params to one     * line of file </p>     */    public Object callFunction(String name,ArrayList param) throws FSException {                //(void) println(param.....)        if (name.equals("println")) {            int n;            String s="";            for(n=0;n<param.size();n++) {                s=s+ param.get(n);            }            System.out.println(s);        }        //string readln()        else if (name.equals("readln")) {            try {                return new BufferedReader(                new InputStreamReader(System.in)).readLine();                            } catch (IOException e)  {                throw new FSException(e.getMessage());            }        }        //int open(string file,string mode)        else if (name.equals("open")) {            int n;                        try {                for(n=0;n<25;n++) {                    if (files[n]==null) {                        if (((String)param.get(1)).equals("r")) {                            files[n]=new BufferedReader(                            new FileReader((String)param.get(0)));                            break;                        } else if (((String)param.get(1)).equals("w"))  {                            files[n]=new BufferedWriter(                            new FileWriter((String)param.get(0)));                            break;                        } else {                            throw new FSException(                            "open expects 'r' or 'w' for modes");                        }                    }                }            } catch (IOException e)  {                throw new FSException(e.getMessage());            }            if (n<25) return new Integer(n);            else return new Integer(-1);        }        //(void)close(int fp)        else if (name.equals("close")) {            int n;            n=((Integer)param.get(0)).intValue();            if (files[n]==null) {                throw new FSException("Invalid file number passed to close");            }            try {                if (files[n] instanceof BufferedWriter) {                    ((BufferedWriter)files[n]).close();                } else {                    ((BufferedReader)files[n]).close();                }                files[n]=null;            } catch (IOException e) {                throw new FSException(e.getMessage());            }        }        //(void) write(params....)        else if (name.equals("write")) {            int n;            String s="";            for(n=1;n<param.size();n++) {                s=s+ param.get(n);            }            n=((Integer)param.get(0)).intValue();            if (files[n]==null) {                throw new FSException("Invalid file number passed to write");            }            if (!(files[n] instanceof BufferedWriter)) {                throw new FSException("Invalid file mode for write");            }            try {                ((BufferedWriter)files[n]).write(s,0,s.length());                ((BufferedWriter)files[n]).newLine();            } catch (IOException e) {                throw new FSException(e.getMessage());            }        }        //string read(int fp)        else if (name.equals("read")) {            int n;            String s;            n=((Integer)param.get(0)).intValue();            if (files[n]==null) {                throw new FSException("Invalid file number passed to read");            }            if (!(files[n] instanceof BufferedReader)) {                throw new FSException("Invalid file mode for read");            }            try {                s=((BufferedReader)files[n]).readLine();                //dodge eof problems                if (s==null) s="";                return s;            } catch (IOException e) {                throw new FSException(e.getMessage());            }        }        //int eof(fp)        else if (name.equals("eof")) {            int n;            n=((Integer)param.get(0)).intValue();            if (files[n]==null) {                throw new FSException("Invalid file number passed to eof");            }            BufferedReader br=(BufferedReader)files[n];            try {                br.mark(1024);                if (br.readLine()==null) {                    return new Integer(1);                } else {                    br.reset();                    return new Integer(0);                }            } catch (IOException e) {                throw new FSException(e.getMessage());            }        } else {            super.callFunction(name,param);        }        return new Integer(0);    }}

⌨️ 快捷键说明

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