File file = new File("");
try {
//字节流
InputStream inputStream = new FileInputStream(file);
OutputStream outputStream = new FileOutputStream(file);
//字符流
Writer writer = new FileWriter(file);
Reader reader = new FileReader(file);
//字节流转字符流
Reader reader1 = new InputStreamReader(inputStream, Charset.defaultCharset());
Writer writer1 = new OutputStreamWriter(outputStream, Charset.defaultCharset());
//字节缓冲流,默认的缓存是8kb,当缓存满时,会把数据写入文件,并且缓存下标置为0,重头开始覆盖数据。
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
String info = "你好";
//这个时候其实是写入缓存,并没有写到文件
bufferedOutputStream.write(info.getBytes());
//关闭的时候才写入文件
bufferedOutputStream.close();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
byte[] bytes = new byte[1024];
int length = -1;
while ((length = bufferedInputStream.read(bytes)) != -1){
System.out.println(new String(bytes,0,length));
}
bufferedInputStream.close();
//字符缓冲流,默认的缓存是8kb
BufferedReader bufferedReader = new BufferedReader(reader);
char[] chars = new char[1024];
while ((length = bufferedReader.read(chars)) != -1){
System.out.println(new String(chars,0,length));
}
bufferedReader.close();
//字节数组流,基于内存操作,维护内部的数组
String str = "1245878555fdsfhjsSDHNc";
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(str.getBytes());
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int curr = -1;
while ((curr = byteArrayInputStream.read()) != -1){
//只取字母
if ((curr>=65 && curr<=90) || (curr>=97 && curr<=122)) {
byteArrayOutputStream.write(curr);
}
}
System.out.println(byteArrayOutputStream.toString());
//合并流处理,获取要合并的流文件
InputStream in1 = new FileInputStream(file);
InputStream in2 = new FileInputStream(file);
InputStream in3 = new FileInputStream(file);
InputStream in4 = new FileInputStream(file);
Vector<InputStream> v = new Vector<InputStream>();
v.add(in1);
v.add(in2);
v.add(in3);
v.add(in4);
Enumeration<InputStream> list = v.elements();
//合并流处理
SequenceInputStream sequenceInputStream = new SequenceInputStream(list);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("ASD"));
while ((length = sequenceInputStream.read(bytes)) != -1){
bos.write(bytes, 0, length);
bos.flush();
}
bos.close();
sequenceInputStream.close();
System.out.println("合并完成");
//字符串流
StringReader stringReader = new StringReader("hello word");
StreamTokenizer streamTokenizer = new StreamTokenizer(stringReader);
int totol = 0;
while (streamTokenizer.ttype != StreamTokenizer.TT_EOF){
if (streamTokenizer.nextToken() == StreamTokenizer.TT_WORD){
totol++;
}
}
System.out.println("一个"+ totol + "个单词");
//管道流
//管道输入流应该接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。
//通常由某个线程从PipedInputStream对此读取,并由其他线程将其写入到相应的PipedOutputStream。
//不建议对这两个对象尝试使用单个线程,因为这样可能死锁线程。
//管道输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。
//如果向链接管道输出流提供数据字节的线程不再存在,则认为该管道已损坏
PipedInputStream pipedInputStream = new PipedInputStream();
PipedOutputStream pipedOutputStream = new PipedOutputStream();
pipedInputStream.connect(pipedOutputStream);
ReadThread readThread = new ReadThread(pipedInputStream);
WriteThread writeThread = new WriteThread(pipedOutputStream);
new Thread(readThread).start();
new Thread(writeThread).start();
//Properties文件操作
Properties properties = new Properties();
// InputStream inputStream1 = new FileInputStream("conger.properties");
InputStream inputStream1 = Thread.currentThread().getContextClassLoader().getResourceAsStream("conger.properties");
//加载配置文件
properties.load(inputStream1);
//读操作
String value = properties.getProperty("key");
System.out.println(value);
//写操作
properties.put("key","内容") ;
OutputStream outputStream1 = new FileOutputStream("conger.properties");
properties.store(outputStream1,"备注");
outputStream1.close();
} catch (IOException e) {
e.printStackTrace();
}
class ReadThread implements Runnable{
private final PipedInputStream pipedInputStream;
public ReadThread(PipedInputStream pipedInputStream) {
this.pipedInputStream = pipedInputStream;
}
@Override
public void run() {
try {
byte[] buf = new byte[1024];
int len = pipedInputStream.read(buf);
String s = new String(buf,0,len);
System.out.println("读到:" + s);
pipedInputStream.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
class WriteThread implements Runnable{
private final PipedOutputStream pipedOutputStream;
public WriteThread(PipedOutputStream pipedOutputStream) {
this.pipedOutputStream = pipedOutputStream;
}
@Override
public void run() {
try {
pipedOutputStream.write("dffg".getBytes());
pipedOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}