当前位置 : 主页 > 编程语言 > java >

InPutStream OutPutStream字节流

来源:互联网 收集:自由互联 发布时间:2022-09-29
字节流InputStream OutputStream流(抽象类) java中的四大IO抽象类: InputStream OutputStream reader writer InputStream 表示字节输入流的所有父类,作为抽象类,不能被实例化,数据的读取由子类来实现,节点不
字节流InputStream OutputStream流(抽象类)

java中的四大IO抽象类:

InputStream    OutputStream      reader     writer

InputStream表示字节输入流的所有父类,作为抽象类,不能被实例化,数据的读取由子类来实现,节点不同有不同的节点流子类,继承InputStream的流都是想程序中输入数据,且单位为字节.

int read()读取一个字节的数据,并将字节的值作为int类型返回,为读出节点返回-1.

OutputStream表示字节输出流的所有类的父类.输出流接收输出字节并将这些字节发送到某个目的地

reader用于读取字符流的抽象类,数据单位为字符

writer用于输出粗的字符流抽象类,数据单位为字符

判断文件的真实类型:

import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;

public class InputStream3 {
//判断文件的真实类型
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("ffd8ffe0","jpg");
map.put("e58d8ee4","txt");
map.put("504b34","zip");
map.put("fd8ffe0","png");
map.put("52617221","rar");
System.out.println(getType(new File("d:/ac/1.jpg")));
// File file = new File("d:/ac/");
// File[] f = file.listFiles();
// for(File m : f) {
// String fn = m.getName();
// String ext = fn.substring(fn.lastIndexOf(".")).toLowerCase();
// System.out.printf("%s : %s : %s %n", fn, ext,getHeader(m,10));
}

public static String getType(File file) {
Map<String, String> map = new HashMap<>();
map.put("ffd8ffe0", "jpg");
map.put("e58d8ee4", "txt");
map.put("504b34", "zip");
map.put("fd8ffe0", "png");
map.put("52617221", "rar");
String header = getHeader(file, 4);
if (map.containsKey(header)) {
return map.get(header);
} else {
return "未知文件";
}
}

public static String getHeader(File src, int n){
String header ="";
if(src.isFile()){
try(var is = new FileInputStream(src)){
byte[] bytes = new byte[n];
is.read(bytes);
StringBuilder sub = new StringBuilder();
for(byte b : bytes){
sub.append(String.format("%x",b));
}
header = sub.toString();

}catch (Exception e){}
}else{
header = "不是文件";
}
return header;
}
}

合并多个文件:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class AllCodeDemo {
static int num = 0;
public static void main(String[] args) {
all( new File("D:\\idea project\\project"));
}

public static void all(File dir){
if(dir.isDirectory()){
File[] fs = dir.listFiles();
for(File f : fs){
if(f.isDirectory()) all(f);
if(f.isFile()&&f.getName().endsWith(".java")){
all(++num,f,new File("src.md"));
}
}
}
if(dir.isFile()&&dir.getName().endsWith(".java")){
all(++num,dir,new File("src.md"));
}
}

public static void all(int n, File src, File dst) {
String template = """
> %d、%s (%d行, 日期: %tF %<tT)
'''java
%s
'''

""";
try (var is = new FileInputStream(src); var os = new FileOutputStream(dst, true)) {
int num = n;
String s = new String(is.readAllBytes());
long rows = s.lines().count();
String path =src.getAbsolutePath();
String source = String.format(template, num ,path , rows, src.lastModified(), s);
os.write(source.getBytes());
os.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}


网友评论