普通输入输出
import java.util.Scanner;
public class IODemo {
// 小规模输入输出 对整体耗时影响不大
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int a = sc.nextInt(); // 接收一个Int 空格符作为分隔符
int b = sc.nextInt();
System.out.println(a + " + " + b + " = " + (a + b));
}
/*
10 20
20 30
40 50
10 + 20 = 30
20 + 30 = 50
40 + 50 = 90
*/
}
}
快速输入输出
输入采用BufferedReader读取整行,再用StringTokenizer按指定分隔符切割得到各个数据项;
替代思路:readLine读取整行后,使用String.split()进行分割;
输出采用PrintWriter缓冲输出,最后手动flush;
替代思路:使用StringBuilder拼接再一次性输出。
import java.io.*;
import java.util.StringTokenizer;
public class FastIO {
// 应对大规模输入输出,避免超时
public static void main(String[] args) throws IOException {
// 输入缓冲
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// 输出缓冲
PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));
// 第一行是输入的行数
int lineNumber = Integer.parseInt(reader.readLine());
while (lineNumber-- != 0) { // 按行读取
// 按指定分隔符切割
StringTokenizer tokenizer = new StringTokenizer(reader.readLine(), " ");
int sum = 0;
while (tokenizer.hasMoreTokens()) {
// 获取单个数据项
sum += Integer.parseInt(tokenizer.nextToken());
}
// 添加到输出缓冲区
pw.println(sum);
}
// 刷新
pw.flush();
/*
3
10 20 30
20 30 40
30 40 50
60
90
120
*/
}
}
文件读写
文本类型
import java.io.*;
import java.util.StringJoiner;
import java.util.StringTokenizer;
public class FileIO {
// 适合文本文件
public static void main(String[] args) {
// ./ 表示整个项目的根目录
// 输入BufferedReader + FileReader
// 输出BufferedWriter + FileWrite
try (BufferedReader br = new BufferedReader(new FileReader("./data.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("./output.txt"))
) {
String line;
while ((line = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(line);
int sum = 0;
StringJoiner sj = new StringJoiner(" + ");
while (st.hasMoreTokens()) {
String num = st.nextToken();
sj.add(num);
sum += Integer.parseInt(num);
}
bw.write(sj.toString() + " = " + sum);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节流
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileIO2 {
// 适合二进制文件
public static void main(String[] args) {
try (FileInputStream inputStream = new FileInputStream("./1.jpg");
FileOutputStream outputStream = new FileOutputStream("./2.jpg")) {
// 缓存区
byte[] buffer = new byte[1024];
int bytesReader;
int bytesNumber = 0;
// 直到读完为止
while ((bytesReader = inputStream.read(buffer)) != -1) {
// 写入
outputStream.write(buffer, 0, bytesReader);
bytesNumber += bytesReader;
}
System.out.println("there are " + bytesNumber + " bytes");
} catch (IOException e) {
e.printStackTrace();
}
}
}
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qwerzbc66/article/details/163951425



