Nothing

java输入输出

2024/07/18

输入输出流

输入流 输出流
字节流 InputStream OutputStream
字符流 Reader Writer

输入到控制台

语法

1
2
3
4
5
6
7
8
public class test {
public static void main(String[] args) {
System.out.println(msg);//输出一个字符串并换行
System.out.print(msg);//输出一个字符串不换行
System.out.printf(format,msg);//格式化输出
}
}

  • println输出的内容自带\n,print不带\n。
  • printf的格式化输出方式和C语言中的printf基本是一致的。

类似c语言的占位输出符

转换符 类型 举例
d 十进制整数 (“%d”,100) 100
x 十六进制整数 (”%x“,100) 64
o 八进制整数 (”%o“,100) 144
f 定点浮点数 (”%f“,100f) 100.000000
e 指数浮点数 (”%e“,100f) 1.000000e+02
g 通用浮点数 (”%g“,100) 100.000
a 十六进制浮点数 (”%a“,100) 0x1.9p6
s 字符串 (”%s“,“100”) 100
c 字符 (”%c“,‘1’) 1
b 布尔值 (”%b“,100) true
% 百分号 (”%。2f%%“,2/7f) 0.29%

从键盘输入

1
2
3
4
5
6
7
8
9
10
11
import java.util.Scanner;//导入util包

public class test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();//从键盘输入一个数字
System.out.println(num);//输出该数字
sc.close();//注意,要记得调用关闭方法
}
}

OutputStream与InputStream

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*;

public class InputStreamOutputStreamExample {
public static void main(String[] args) {
try {
// 创建一个文件输入流对象,用于读取文件内容
FileInputStream fis = new FileInputStream("input.txt");

// 创建一个文件输出流对象,用于将数据写入文件
FileOutputStream fos = new FileOutputStream("output.txt");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead);
}
fis.close();
fos.close();

System.out.println("文件复制成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}

read方法

read()

从输入流中读取数据的下一个字节到程序内部中,返回值为字符的ASCII值,否则为-1

read(byte [] b )

从输入流中读取的一定数量字节数,并将它们存储到缓冲区数组b中,返回值为实际读取的字节数

read( byte [] b , int off , int len)

读取 len字节的数据从输入流到一个字节数组,返回实际读取的字节数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.yiibai;

import java.io.FileInputStream;
import java.io.InputStream;

public class InputStreamDemo {
public static void main(String[] args) throws Exception {

InputStream is = null;
byte[] buffer=new byte[5];
char c;
try{
// 文本内容为 ABCDE
is = new FileInputStream("C://test.txt");
// 这个2指的是数据偏移 不是流偏移
is.read(buffer, 2, 3);
// 循环字节数据
for(byte b:buffer){
if(b==0)
// 偏移了2个单位数组默认值为0,所以前面2个单位是没有的
c='-';
else
c=(char)b;
System.out.print(c);
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(is!=null)
is.close();
}
}
}

write方法

  • write(int c):写入数字,利用 ASCII 码表 或者 Unicode 表转化

  • write(String str):写入字符串

  • write(char[] cbuf):写入字符数组

  • write(String str, int off, int len):写入字符串的一部分

  • write(char[] cbuf,int off,int len):写入字符数组的一部分

CATALOG
  1. 1. 输入输出流
    1. 1.1. 输入到控制台
    2. 1.2. 从键盘输入
    3. 1.3. OutputStream与InputStream
    4. 1.4. read方法
    5. 1.5.
      1. 1.5.1. read()
      2. 1.5.2. read(byte [] b )
      3. 1.5.3. read( byte [] b , int off , int len)
    6. 1.6. write方法