📄 basicio.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 + -