java和java基础4

泛型

ArrayList<Integer> list = new ArrayList<>();
list.add(12);
list.add(17);
list.add(13);

for (int item : list) {
    System.out.println(item);
}

HashMap<String, Integer> map = new HashMap<>(4);
map.put("Tom", 34);
map.put("Jery", 56);
map.put("Lili", 83);
map.put("Lucy", 64);

Set<Map.Entry<String, Integer>> entries = map.entrySet();

Iterator<Map.Entry<String, Integer>> iterator = entries.iterator();
while (iterator.hasNext()) {
    Map.Entry<String, Integer> item = iterator.next();
    Map.Entry item1 = item;
    System.out.println(item1.getKey());
}

泛型方法

泛型不同的类型,不能相互赋值
静态方法中不能使用类的泛型
异常类不能使用泛型
泛型方法所属的类是不是泛型类都没关系

public static <E> List<E> compFrom(E[] arrs) {
    ArrayList<E> objects = new ArrayList<>();

    for (E e : arrs) {
        objects.add(e);
    }

    return objects;
}

泛型的继承,通配符的使用

类A是类B的父类, G和G并没有关系,所以赋值时候不通过

List<String> list1 = null;  
List<Object> list2 = null;  
List<?> list = null  
list = list1  

对于List<?> 就不能向其内部加数据, 但是运行读取里面的数据

? extends Person : 小于Person类的  
? super Person : 大于Person类的  

IO流

file 类

File代表一个文件或者文件夹

getAbsolutePath();// 获取绝对路径
getPath() //获取路径
getName() //获取名称
getParent() //获取上层文件目录路径, 无的话返回null
length() //获取文件长度,不能获取目录的长度 
lastModified() //获取最后一次修改时间
list() //获取指定目录下面的所有文件或者文件目录的名称数组
listFiles() 获取指定目录下面所有文件或者文件目录的File数组

第二波

isDirectory() // 判断是否为文件目录
isFile() //判断是否为文件
exists() // 判断是否存在
canRead() //判断是否可读
canWrite() //是否可写
isHidden()//判断是否隐藏

第三波

createNewFile()
mkdir() //目录上一层要存在才能创建
mkdirs() //上一层目录不存在也可以进行创建
delete()

流的原理和流的分类

I/O: Input/Output 处理设备之间的数据传输,如读写文件,网络通讯;

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

类别       字节输入流                字节输出流               字符输入流           字符输出流  
抽象基类    InputStream             OutputStream             Reader              Writer  

访问文件*   FileInputStream         FileOutStream            FileReader          FileWriter

访问数组    ByteArrayInputStream    ByteArrayOutputStream    CharArrayReader     CharArrayWriter

访问管道    PipedInputStream        PipedOutInputStream      PipedReader         PipedWriter  

访问字符串                                                   StringReader        StringWriter  

缓冲流*     BufferedInputStream     BufferedOutputStream     BufferedReader      BufferWriter

转换流*                                                      InputStreamReader   OutputStreamWriter

对象流*     ObjectInputStream       ObjectOutputStream  

打印流                              PrintStream                                   PrintWriter
public static void main(String[] args) throws IOException {
    try {
        File file = new File("hello.txt");
        FileReader fileReader1 = new FileReader(file);

        int read = fileReader1.read();
        while (read != -1) {
            System.out.print((char)read);
            read = fileReader1.read();
        }
    } finally {
        fileReader1.close();
    }
}

文件内容的复制

public static void main(String[] args) {
    FileReader srcFileReader = null;
    FileWriter distFileWriter = null;

    try {
        File srcFile = new File("hello.txt");
        File distFile = new File("hello2.txt");

        srcFileReader = new FileReader(srcFile);
        distFileWriter = new FileWriter(distFile);

        char[] cbuf = new char[5];
        int len;

        while ((len = srcFileReader.read(cbuf)) != -1) {
            distFileWriter.write(cbuf, 0,len);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        try {
            srcFileReader.close();
            distFileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

public static void main(String[] args) {
    File srcImg = new File("timg.jpeg");
    File distImg = new File("distImg.jpeg");

    FileInputStream srcInputStream = null;
    FileOutputStream distOutputStream = null;

    try {
        srcInputStream = new FileInputStream(srcImg);
        distOutputStream = new FileOutputStream(distImg);

        byte[] bytes = new byte[5];
        int len;
        while ((len = srcInputStream.read(bytes)) != -1) {
            distOutputStream.write(bytes, 0, len);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            srcInputStream.close();
            distOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

缓冲流的使用

public static void main(String[] args) {
    File srcFile = new File("timg.jpeg");
    File distFile = new File("dist.jpeg");

    FileInputStream srcFileStream = null;
    FileOutputStream distStream = null;
    try {
        srcFileStream = new FileInputStream(srcFile);
        distStream = new FileOutputStream(distFile);

        BufferedInputStream bis = new BufferedInputStream(srcFileStream);
        BufferedOutputStream bos = new BufferedOutputStream(distStream);
        byte[] bytes = new byte[5];
        int len;

        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes, 0, len);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {

        try {
            srcFileStream.close();
            distStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}