1、从控制台读取数据
system.in:
BufferedReader:
InputStreamReader:
实例:控制台模拟登录,未连接数据库。BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String usrName; String passWord; try { System.out.println("请输入用户名:"); usrName = in.readLine(); System.out.println("请输入密码:"); passWord = in.readLine(); if ("fenby".equals(usrName) && passWord.equals("password")) { System.out.println("登录成功!"); } else { System.out.println("用户名密码错误!"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
2、FileInputStream类
FileInputStream用于从文件读取数据,我们可以通过关键词new
来创建一个流对象(有多种构造函数可用来创建对象)。这里我们使用字符串类型的文件名来创建一个输入流的对象实现文件的读取:
InputStream f = new FileInputStream("C:/java/hello");
也可以使用一个文件对象来创建一个输入流对象实现文件的读取。我们首先得使用File()
构造函数创建一个文件对象:
File f = new File("C:/java/hello"); InputStream f = new FileInputStream(f);
创建了InputStream对象,我们就可以使用下面的方法来读取流或者进行其它的流操作了。
序号 | 方法及描述 |
---|---|
1 | public void close() throws IOException {} 关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。 |
2 | protected void finalize() throws IOException {} 这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。 |
3 | public int read(int r) throws IOException {} 这个方法从InputStream对象读取指定字节的数据。返回为整数值。返回下一字节数据,如果已经到结尾则返回-1。 |
4 | public int read(byte[] r) throws IOException {} 这个方法从输入流读取r.length长度的字节。返回读取的字节数。如果是文件结尾则返回-1。 |
5 | public int available() throws IOException {} 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。 |
除了InputStream外,还有一些其他的输入流:
- ByteArrayInputStream
- DataInputStream
3、FileOutputStream类
FileOutputStream用来创建一个文件并向文件中写数据。如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。有两个构造函数可以用来创建FileOutputStream对象。
使用字符串类型的文件名来创建一个输出流对象:
OutputStream f = new FileOutputStream("C:/java/hello");
也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()
方法来创建一个文件对象:
File f = new File("C:/java/hello"); OutputStream f = new FileOutputStream(f);
创建OutputStream对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。
序号 | 方法及描述 |
---|---|
1 | public void close() throws IOException {} 关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。 |
2 | protected void finalize() throws IOException {} 这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。 |
3 | public void write(int w) throws IOException{} 这个方法把指定的字节写到输出流中。 |
4 | public void write(byte[] w) 把指定数组中w.length长度的字节写到OutputStream中。 |
除了OutputStream外,还有一些其它的输出流,更多的细节参考下面链接:
- ByteArrayOutputStream
- DataOutputStream
4、方法调用
用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方法或者类变量。 静态方法中不能直接调用非静态方法。因为非静态方法不是独立存在的,它是依附于对象存在——即只有申明了对象,才能通过对象调用。而静态方法则可以直接通过类名调用,而不需要申明对象。因此直接引用非静态方法就会出错。 比如常见的main方法都是静态的,必须由static修饰,因此在main方法里调用类的其他非静态方法,都是需要先申明对象,才能用。否则就会出现引用非静态方法的错误。 要解决这个问题,可以去除一般方法的static关键字(如果是main方法,则不能去掉static)。另外一种方法就是把需要引用的方法也设置成静态方法。