关联阅读:
零基础学JAVA小知识点总结(一)
零基础学JAVA小知识点总结(二)
刷OJ会遇到很多关于输入输出的问题,有的时候不是你的方法有问题,而就是输入的问题,往往很令人气恼,因此打算总结一下JAVA中关于输入和输出的问题。下次,在气恼暴躁的时候,不妨试一试其他方法。
一、JAVA中输入数据的方法
方法一:从控制台接收一个字符,然后将其打印出来
import java.io.*;
public static void main(String [] args) throws IOException{
System.out.print('Enter a Char:');
char i = (char) System.in.read();
System.out.println('your char is :'+i);
}
虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能针对一个字符的获取,同时,获取进来的变量的类型只能是char,当我们输入一个数字,希望得到的也是一个整型变量的时候,我们还得修改其中的变量类型,这样就显得比较麻烦。
方法二:从控制台接收一个字符串,然后将其打印出来。这种方法我们需要用到BufferedReader类和InputStreamReader类
import java.io.*;
public static void main(String [] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
System.out.println('Enter your value:');
str = br.readLine();
System.out.println('your value is :'+str);
}
方法三:这种方法我认为是最简单,最强大的,就是用Scanner类
import java.util.Scanner;
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.println('请输入你的姓名:');
String name = sc.nextLine();
System.out.println('请输入你的年龄:');
int age = sc.nextInt();
System.out.println('请输入你的工资:');
float salary = sc.nextFloat();
System.out.println('你的信息如下:');
System.out.println('姓名:'+name+''+'年龄:'+age+''+'工资:'+salary);
}
注意:
(1)Scanner方法虽然和强大,但是通过做题发现,使用Scanner进行输入的时候,会跳不出while循环,导致程序一致在while中,不能进行之后的运算,导致代码出错。此时,不妨换用方法二中提到的BufferedReader类和InputStreamReader类。
(2)我们可以通过JAVA中Scanner类的next()和nextLine()方法获取输入的字符串,但是在获取字符串之前要使用hsaNext()和hasNextLine()方法做一下检验,判断是否还有数据输入。hasNext与hasNextLine的区别:hasNext是由在识别到费空格的时候才能判断是否还有next,而hasNextLine只是识别到空格就能判断是都有next。也就是说,如果第一个输入就是空格的话,hasNext方法输出结果会出错,无法是被第一个空格。原因在于:next()对输入有效字符之前遇到的空白,会自动将其去掉。只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。nextLine可以获得空白,以Enter为结束符,nextLine返回的是输入回车之前的所有字符。
二、JAVA中的InputStream和OutputStream
InputStream和OutputStream是抽象类,是所有字节输入流和输出流的父类。这里,我们首先要分清楚两个概念:
InputStream(输入流):输入流是用来读入数据的。- - - > > >读入
OutputStream(输出流):输出流是用来写出数据的。- - - > > >写出
三、JAVA中的文件File
要学习File类必须弄清楚目录和文件的概念:
1、文件:表示txt文件、word文件、rar文件等文件。
2、目录:就是文件夹的意思。
构造方法:
File(String parent, String child)根据parent和child拼成的路径生成一个File对象,该File对象的getParentFile()找到该对象的目录,如果目录不存在则该对象的createNewFile()方法将返回false即不能生成文件,所以生成文件以前必须先用getParentFile().mkdirs()确保生成目录
注:如果使用.mkdirs()之前没有先getParentFile(),那么如果File中包含文件名则会把文件名也生成一个文件夹)。
在java.io包下,File类是唯一与文件本身操作:如删除文件、创建文件、取得文件信息有关的程序类。
四、JAVA中FileInputStream与FileOutputStream基本使用详解
文件输入流——FileInputScream:
FileInputStream 从文件系统中的某个文件中获得输入字节。
构造方法:
(1)//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
public FileInputStream(File file);
(2)//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
public FileInputStream(String name);
常用方法:
从输入流中读取一个字节大小的数据
(1)//从此输入流中读取一个数据字节。
public int read();
从输入流一次读取一个字节数组
(1)//从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
public int read(byte[] b);
(2)//从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。off:目标数组 b 中的起始偏移量。
public int read(byte[] b,int off,int len);
文件输出流——FileOutputScream:
文件输出流是用于将数据写入到文件中。
构造方法
(1)//创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
public FileOutputStream(File file);
(2)//创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
public FileOutputStream(File file,boolean append);
(3)//创建一个向具有指定名称的文件中写入数据的输出文件流。
public FileOutputStream(String name);
(4)//创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
public FileOutputStream(String name,boolean append);
常用的方法
向文件中写入一个字节大小的数据
(1)//向文件中写入一个字节大小的数据
public void write(int b);
向文件中一次性写入一个字节数组的数据
(1)//将 b.length 个字节从指定 byte 数组写入此文件输出流中。
public void write(byte[] b);
(2)//指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
public void write(byte[] b,int off,int len);
具体地从网络或本地读取图片数据的命令可以参看:
【参考文章】
原文链接:
原文链接:
原文链接:
——————————————————
BY:HW-TS










































苏公安网备 32011402010933号