image.png从控制台读取输出字符
从文件中写入读取字符
从文件中写入读取字节
文件夹操作
1. 从控制台读取输出字符
输入由System.in完成。将System.in放入inputStreamReader中,再传入到提供缓冲区的BufferReader中。读取单个字符使用 read()函数,当返回值为-1时代表读取到结尾。读取一行文字时用readLine()函数。输出即最常用的System.out.println();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//将字符流绑定到控制台
//读取字符
System.out.println("输入字符, 按下 'q' 键退出。");
char c;
do {
c = (char) br.read();//read方法每次从控制台中读取一个字符
System.out.println(c);
} while (c != 'q');
//读取字符串
String str;
System.out.println("接下来请输入字符串,输入‘end’退出");
do {
str = br.readLine();
System.out.println(str);
} while (!str.equals("end"));
}
2. 从文件中写入读取字符
与文件进行IO操作时,用FileInputStream FileOutputStream,若是字符组成的文件,为方便操作还要放入InputStreamReader(常用于字节到字符的转换),OutputStreamWriter中。
File f = new File("a.txt");
FileOutputStream fop = new FileOutputStream(f);
// 构建FileOutputStream对象,文件不存在会自动新建
OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
// 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
writer.append("中文输入");
writer.append("\r\n");
writer.append("English");
writer.close();
fop.close();
FileInputStream fip = new FileInputStream(f);
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
// 构建InputStreamReader对象,编码与写入相同
StringBuffer sb = new StringBuffer();//读取缓冲区
while (reader.ready()) {
sb.append((char) reader.read());
// 转成char加到StringBuffer对象中
}
System.out.println(sb.toString());
reader.close();
fip.close();
3. 从文件中写入读取字节
二进制文件如图片,媒体文件等需要通过字节方式传输。此时不要放入Reader和Writer中。
byte[] by = new byte[4];
InputStream is = new FileInputStream("aa.jpg");
OutputStream os = new FileOutputStream("b.jpg");
while(is.read(by)!=-1)
{
os.write(by);
}
os.close();
is.close();
4. 文件夹操作
对文件夹的创建,列表,删除操作。
File fordir = new File("E:/testtext/hell/e");
fordir.mkdirs();//创建文件夹
//fordir.createNewFile();
System.out.println(fordir.isDirectory());//判断是否是一个文件夹
//查看文件夹里的内容
String s[] = fordir.list();
for (int i = 0; i < s.length; i++) {
File f1 = new File(fordir + "/" + s[i]);
if (f1.isDirectory()) {
System.out.println(s[i] + " 是一个目录");
} else {
System.out.println(s[i] + " 是一个文件");
}
}
//删除文件夹
File fordel = new File(fordir + "/"+ "1");
fordel.mkdir();
fordel.delete();
使用IO流的常用方式如下:
1) File file = new File ("hello.txt");
FileInputStream in=new FileInputStream (file); //读取二进制
2) File file = new File ("hello.txt");
FileInputStream in=new FileInputStream (file);
InputStreamReader inReader=new InputStreamReader (in,"UTF-8");
BufferedReader bufReader=new BufferedReader(inReader); //需要指定编码的字符文件
3) File file = new File ("hello.txt");
FileReader fileReader=new FileReader(file); //与InputStreamReader区别仅仅是构造函数
BufferedReader bufReader=new BufferedReader(fileReader);
附全部代码:
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
//IoReadCmd();
//IoReadFile();
IoDir();
}
public static void IoReadCmd() throws IOException {
/**
* JavaIO流之控制台
* Java 的控制台输入由 System.in 完成。
*/
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//将字符流绑定到控制台
//读取字符
System.out.println("输入字符, 按下 'q' 键退出。");
char c;
do {
c = (char) br.read();//read方法每次从控制台中读取一个字符
System.out.println(c);
} while (c != 'q');
//读取字符串
String str;
System.out.println("接下来请输入字符串,输入‘end’退出");
do {
str = br.readLine();
System.out.println(str);
} while (!str.equals("end"));
}
public static void IoReadFile() throws IOException{
/**
* JavaIO流之文件
*/
//字符方式读取写入文件
File f = new File("a.txt");
FileOutputStream fop = new FileOutputStream(f);
// 构建FileOutputStream对象,文件不存在会自动新建
OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
// 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk
writer.append("中文输入");
writer.append("\r\n");
writer.append("English");
writer.close();
fop.close();
FileInputStream fip = new FileInputStream(f);
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
// 构建InputStreamReader对象,编码与写入相同
StringBuffer sb = new StringBuffer();//读取缓冲区
while (reader.ready()) {
sb.append((char) reader.read());
// 转成char加到StringBuffer对象中
}
System.out.println(sb.toString());
reader.close();
fip.close();
//流方式读取 写入图片
byte[] by = new byte[4];
InputStream is = new FileInputStream("aa.jpg");
OutputStream os = new FileOutputStream("b.jpg");
while(is.read(by)!=-1)
{
os.write(by);
}
os.close();
is.close();
}
public static void IoDir(){
/**
* JavaIO流之文件夹
*/
File fordir = new File("E:/testtext/hell/e");
fordir.mkdirs();//创建文件夹
//fordir.createNewFile();
System.out.println(fordir.isDirectory());//判断是否是一个文件夹
//查看文件夹里的内容
String s[] = fordir.list();
for (int i = 0; i < s.length; i++) {
File f1 = new File(fordir + "/" + s[i]);
if (f1.isDirectory()) {
System.out.println(s[i] + " 是一个目录");
} else {
System.out.println(s[i] + " 是一个文件");
}
}
//删除文件夹
File fordel = new File(fordir + "/"+ "1");
fordel.mkdir();
fordel.delete();
}
}
网友评论