`
249009188
  • 浏览: 47957 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java中的IO整理完整版(二)

阅读更多
BufferedReader的小例子

注意: BufferedReader只能接受字符流的缓冲区,因为每一个中文需要占据两个字节,所以需要将System.in这个字节输入流变为字符输入流,采用:

BufferedReader buf = new BufferedReader( 
                new InputStreamReader(System.in));
下面给一个实例:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

/** 
* 使用缓冲区从键盘上读入内容 
* */
public class BufferedReaderDemo{ 
    public static void main(String[] args){ 
        BufferedReader buf = new BufferedReader( 
                new InputStreamReader(System.in)); 
        String str = null; 
        System.out.println("请输入内容"); 
        try{ 
            str = buf.readLine(); 
        }catch(IOException e){ 
            e.printStackTrace(); 
        } 
        System.out.println("你输入的内容是:" + str); 
    } 
}
运行结果:

请输入内容

dasdas

你输入的内容是:dasdas

Scanner类

其实我们比较常用的是采用Scanner类来进行数据输入,下面来给一个Scanner的例子吧

import java.util.Scanner; 

/** 
* Scanner的小例子,从键盘读数据 
* */
public class ScannerDemo{ 
    public static void main(String[] args){ 
        Scanner sca = new Scanner(System.in); 
        // 读一个整数 
        int temp = sca.nextInt(); 
        System.out.println(temp); 
        //读取浮点数 
        float flo=sca.nextFloat(); 
        System.out.println(flo); 
        //读取字符 
        //...等等的,都是一些太基础的,就不师范了。 
    } 
}
其实Scanner可以接受任何的输入流

下面给一个使用Scanner类从文件中读出内容

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

/** 
* Scanner的小例子,从文件中读内容 
* */
public class ScannerDemo{ 
    public static void main(String[] args){ 

        File file = new File("d:" + File.separator + "hello.txt"); 
        Scanner sca = null; 
        try{ 
            sca = new Scanner(file); 
        }catch(FileNotFoundException e){ 
            e.printStackTrace(); 
        } 
        String str = sca.next(); 
        System.out.println("从文件中读取的内容是:" + str); 
    } 
}
【运行结果】:

从文件中读取的内容是:这些文件中的内容哦!

数据操作流DataOutputStream、DataInputStream类

import java.io.DataOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 

public class DataOutputStreamDemo{ 
    public static void main(String[] args) throws IOException{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        char[] ch = { 'A', 'B', 'C' }; 
        DataOutputStream out = null; 
        out = new DataOutputStream(new FileOutputStream(file)); 
        for(char temp : ch){ 
            out.writeChar(temp); 
        } 
        out.close(); 
    } 
}
A B C

现在我们在上面例子的基础上,使用DataInputStream读出内容

import java.io.DataInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 

public class DataOutputStreamDemo{ 
    public static void main(String[] args) throws IOException{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        DataInputStream input = new DataInputStream(new FileInputStream(file)); 
        char[] ch = new char[10]; 
        int count = 0; 
        char temp; 
        while((temp = input.readChar()) != 'C'){ 
            ch[count++] = temp; 
        } 
        System.out.println(ch); 
    } 
}
【运行结果】:

AB

合并流 SequenceInputStream

SequenceInputStream主要用来将2个流合并在一起,比如将两个txt中的内容合并为另外一个txt。下面给出一个实例:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.io.SequenceInputStream; 

/** 
* 将两个文本文件合并为另外一个文本文件 
* */
public class SequenceInputStreamDemo{ 
    public static void main(String[] args) throws IOException{ 
        File file1 = new File("d:" + File.separator + "hello1.txt"); 
        File file2 = new File("d:" + File.separator + "hello2.txt"); 
        File file3 = new File("d:" + File.separator + "hello.txt"); 
        InputStream input1 = new FileInputStream(file1); 
        InputStream input2 = new FileInputStream(file2); 
        OutputStream output = new FileOutputStream(file3); 
        // 合并流 
        SequenceInputStream sis = new SequenceInputStream(input1, input2); 
        int temp = 0; 
        while((temp = sis.read()) != -1){ 
            output.write(temp); 
        } 
        input1.close(); 
        input2.close(); 
        output.close(); 
        sis.close(); 
    } 
}
【运行结果】

结果会在hello.txt文件中包含hello1.txt和hello2.txt文件中的内容。

文件压缩 ZipOutputStream类

先举一个压缩单个文件的例子吧:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipOutputStream; 

public class ZipOutputStreamDemo1{ 
    public static void main(String[] args) throws IOException{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        File zipFile = new File("d:" + File.separator + "hello.zip"); 
        InputStream input = new FileInputStream(file); 
        ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream( 
                zipFile)); 
        zipOut.putNextEntry(new ZipEntry(file.getName())); 
        // 设置注释 
        zipOut.setComment("hello"); 
        int temp = 0; 
        while((temp = input.read()) != -1){ 
            zipOut.write(temp); 
        } 
        input.close(); 
        zipOut.close(); 
    } 
}
【运行结果】

运行结果之前,我创建了一个hello.txt的文件,原本大小56个字节,但是压缩之后产生hello.zip之后,居然变成了175个字节,有点搞不懂。
不过结果肯定是正确的,我只是提出我的一个疑问而已。



上面的这个例子测试的是压缩单个文件,下面的们来看看如何压缩多个文件。

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipOutputStream; 

/** 
* 一次性压缩多个文件 
* */
public class ZipOutputStreamDemo2{ 
    public static void main(String[] args) throws IOException{ 
        // 要被压缩的文件夹 
        File file = new File("d:" + File.separator + "temp"); 
        File zipFile = new File("d:" + File.separator + "zipFile.zip"); 
        InputStream input = null; 
        ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream( 
                zipFile)); 
        zipOut.setComment("hello"); 
        if(file.isDirectory()){ 
            File[] files = file.listFiles(); 
            for(int i = 0; i < files.length; ++i){ 
                input = new FileInputStream(files[i]); 
                zipOut.putNextEntry(new ZipEntry(file.getName() 
                        + File.separator + files[i].getName())); 
                int temp = 0; 
                while((temp = input.read()) != -1){ 
                    zipOut.write(temp); 
                } 
                input.close(); 
            } 
        } 
        zipOut.close(); 
    } 
}
【运行结果】

先看看要被压缩的文件吧:



接下来看看压缩之后的:



大家自然想到,既然能压缩,自然能解压缩,在谈解压缩之前,我们会用到一个ZipFile类,先给一个这个例子吧。java中的每一个压缩文件都是可以使用ZipFile来进行表示的

import java.io.File; 
import java.io.IOException; 
import java.util.zip.ZipFile; 

/** 
* ZipFile演示 
* */
public class ZipFileDemo{ 
    public static void main(String[] args) throws IOException{ 
        File file = new File("d:" + File.separator + "hello.zip"); 
        ZipFile zipFile = new ZipFile(file); 
        System.out.println("压缩文件的名称为:" + zipFile.getName()); 
    } 
}
【运行结果】:

压缩文件的名称为:d:\hello.zip

现在我们呢是时候来看看如何加压缩文件了,和之前一样,先让我们来解压单个压缩文件(也就是压缩文件中只有一个文件的情况),我们采用前面的例子产生的压缩文件hello.zip

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipFile; 

/** 
* 解压缩文件(压缩文件中只有一个文件的情况) 
* */
public class ZipFileDemo2{ 
    public static void main(String[] args) throws IOException{ 
        File file = new File("d:" + File.separator + "hello.zip"); 
        File outFile = new File("d:" + File.separator + "unZipFile.txt"); 
        ZipFile zipFile = new ZipFile(file); 
        ZipEntry entry = zipFile.getEntry("hello.txt"); 
        InputStream input = zipFile.getInputStream(entry); 
        OutputStream output = new FileOutputStream(outFile); 
        int temp = 0; 
        while((temp = input.read()) != -1){ 
            output.write(temp); 
        } 
        input.close(); 
        output.close(); 
    } 
}
【运行结果】:
解压缩之前:



这个压缩文件还是175字节
解压之后产生:



又回到了56字节,表示郁闷。

现在让我们来解压一个压缩文件中包含多个文件的情况吧
ZipInputStream类

当我们需要解压缩多个文件的时候,ZipEntry就无法使用了,如果想操作更加复杂的压缩文件,我们就必须使用ZipInputStream类

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipFile; 
import java.util.zip.ZipInputStream; 

/** 
* 解压缩一个压缩文件中包含多个文件的情况 
* */
public class ZipFileDemo3{ 
    public static void main(String[] args) throws IOException{ 
        File file = new File("d:" + File.separator + "zipFile.zip"); 
        File outFile = null; 
        ZipFile zipFile = new ZipFile(file); 
        ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file)); 
        ZipEntry entry = null; 
        InputStream input = null; 
        OutputStream output = null; 
        while((entry = zipInput.getNextEntry()) != null){ 
            System.out.println("解压缩" + entry.getName() + "文件"); 
            outFile = new File("d:" + File.separator + entry.getName()); 
            if(!outFile.getParentFile().exists()){ 
                outFile.getParentFile().mkdir(); 
            } 
            if(!outFile.exists()){ 
                outFile.createNewFile(); 
            } 
            input = zipFile.getInputStream(entry); 
            output = new FileOutputStream(outFile); 
            int temp = 0; 
            while((temp = input.read()) != -1){ 
                output.write(temp); 
            } 
            input.close(); 
            output.close(); 
        } 
    } 
}
【运行结果】:
被解压的文件:



解压之后再D盘下会出现一个temp文件夹,里面内容:



PushBackInputStream回退流

import java.io.ByteArrayInputStream; 
import java.io.IOException; 
import java.io.PushbackInputStream; 

/** 
* 回退流操作 
* */
public class PushBackInputStreamDemo{ 
    public static void main(String[] args) throws IOException{ 
        String str = "hello,rollenholt"; 
        PushbackInputStream push = null; 
        ByteArrayInputStream bat = null; 
        bat = new ByteArrayInputStream(str.getBytes()); 
        push = new PushbackInputStream(bat); 
        int temp = 0; 
        while((temp = push.read()) != -1){ 
            if(temp == ','){ 
                push.unread(temp); 
                temp = push.read(); 
                System.out.print("(回退" + (char) temp + ") "); 
            }else{ 
                System.out.print((char) temp); 
            } 
        } 
    } 
}
【运行结果】:
hello(回退,) rollenholt

/** 
* 取得本地的默认编码 
* */
public class CharSetDemo{ 
    public static void main(String[] args){ 
        System.out.println("系统默认编码为:" + System.getProperty("file.encoding")); 
    } 
}
【运行结果】:

系统默认编码为:GBK

乱码的产生:

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStream; 

/** 
* 乱码的产生 
* */
public class CharSetDemo2{ 
    public static void main(String[] args) throws IOException{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        OutputStream out = new FileOutputStream(file); 
        byte[] bytes = "你好".getBytes("ISO8859-1"); 
        out.write(bytes); 
        out.close(); 
    } 
}
【运行结果】:

??

一般情况下产生乱码,都是由于编码不一致的问题。

对象的序列化

对象序列化就是把一个对象变为二进制数据流的一种方法。

一个类要想被序列化,就行必须实现java.io.Serializable接口。虽然这个接口中没有任何方法,就如同之前的cloneable接口一样。实现了这个接口之后,就表示这个类具有被序列化的能力。

先让我们实现一个具有序列化能力的类吧:

import java.io.*; 
/** 
* 实现具有序列化能力的类 
* */
public class SerializableDemo implements Serializable{ 
    public SerializableDemo(){ 
         
    } 
    public SerializableDemo(String name, int age){ 
        this.name=name; 
        this.age=age; 
    } 
    @Override
    public String toString(){ 
        return "姓名:"+name+"  年龄:"+age; 
    } 
    private String name; 
    private int age; 
}
这个类就具有实现序列化能力,

在继续将序列化之前,先将一下ObjectInputStream和ObjectOutputStream这两个类

先给一个ObjectOutputStream的例子吧:

import java.io.Serializable; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 

/** 
* 实现具有序列化能力的类 
* */
public class Person implements Serializable{ 
    public Person(){ 

    } 

    public Person(String name, int age){ 
        this.name = name; 
        this.age = age; 
    } 

    @Override
    public String toString(){ 
        return "姓名:" + name + "  年龄:" + age; 
    } 

    private String name; 
    private int age; 

/** 
* 示范ObjectOutputStream 
* */
public class ObjectOutputStreamDemo{ 
    public static void main(String[] args) throws IOException{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream( 
                file)); 
        oos.writeObject(new Person("rollen", 20)); 
        oos.close(); 
    } 
}
【运行结果】:

当我们查看产生的hello.txt的时候,看到的是乱码,呵呵。因为是二进制文件。

虽然我们不能直接查看里面的内容,但是我们可以使用ObjectInputStream类查看:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.ObjectInputStream; 

/** 
* ObjectInputStream示范 
* */
public class ObjectInputStreamDemo{ 
    public static void main(String[] args) throws Exception{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        ObjectInputStream input = new ObjectInputStream(new FileInputStream( 
                file)); 
        Object obj = input.readObject(); 
        input.close(); 
        System.out.println(obj); 
    } 
}
【运行结果】

姓名:rollen 年龄:20

到底序列化什么内容呢?

其实只有属性会被序列化。

Externalizable接口

被Serializable接口声明的类的对象的属性都将被序列化,但是如果想自定义序列化的内容的时候,就需要实现Externalizable接口。

当一个类要使用Externalizable这个接口的时候,这个类中必须要有一个无参的构造函数,如果没有的话,在构造的时候会产生异常,这是因为在反序列话的时候会默认调用无参的构造函数。

现在我们来演示一下序列化和反序列话:

package IO; 

import java.io.Externalizable; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectInput; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutput; 
import java.io.ObjectOutputStream; 

/** 
* 序列化和反序列化的操作 
* */
public class ExternalizableDemo{ 
    public static void main(String[] args) throws Exception{ 
        ser(); // 序列化 
        dser(); // 反序列话 
    } 

    public static void ser() throws Exception{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream( 
                file)); 
        out.writeObject(new Person("rollen", 20)); 
        out.close(); 
    } 

    public static void dser() throws Exception{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        ObjectInputStream input = new ObjectInputStream(new FileInputStream( 
                file)); 
        Object obj = input.readObject(); 
        input.close(); 
        System.out.println(obj); 
    } 


class Person implements Externalizable{ 
    public Person(){ 

    } 

    public Person(String name, int age){ 
        this.name = name; 
        this.age = age; 
    } 

    @Override
    public String toString(){ 
        return "姓名:" + name + "  年龄:" + age; 
    } 

    // 复写这个方法,根据需要可以保存的属性或者具体内容,在序列化的时候使用 
    @Override
    public void writeExternal(ObjectOutput out) throws IOException{ 
        out.writeObject(this.name); 
        out.writeInt(age); 
    } 

    // 复写这个方法,根据需要读取内容 反序列话的时候需要 
    @Override
    public void readExternal(ObjectInput in) throws IOException, 
            ClassNotFoundException{ 
        this.name = (String) in.readObject(); 
        this.age = in.readInt(); 
    } 

    private String name; 
    private int age; 
}
【运行结果】:

姓名:rollen 年龄:20

本例中,我们将全部的属性都保留了下来,

Serializable接口实现的操作其实是吧一个对象中的全部属性进行序列化,当然也可以使用我们上使用是Externalizable接口以实现部分属性的序列化,但是这样的操作比较麻烦,

当我们使用Serializable接口实现序列化操作的时候,如果一个对象的某一个属性不想被序列化保存下来,那么我们可以使用transient关键字进行说明:

下面举一个例子:

package IO; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.io.Serializable; 

/** 
* 序列化和反序列化的操作 
* */
public class serDemo{ 
    public static void main(String[] args) throws Exception{ 
        ser(); // 序列化 
        dser(); // 反序列话 
    } 

    public static void ser() throws Exception{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream( 
                file)); 
        out.writeObject(new Person1("rollen", 20)); 
        out.close(); 
    } 

    public static void dser() throws Exception{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        ObjectInputStream input = new ObjectInputStream(new FileInputStream( 
                file)); 
        Object obj = input.readObject(); 
        input.close(); 
        System.out.println(obj); 
    } 


class Person1 implements Serializable{ 
    public Person1(){ 

    } 

    public Person1(String name, int age){ 
        this.name = name; 
        this.age = age; 
    } 

    @Override
    public String toString(){ 
        return "姓名:" + name + "  年龄:" + age; 
    } 

    // 注意这里 
    private transient String name; 
    private int age; 
}
【运行结果】:

姓名:null 年龄:20

最后在给一个序列化一组对象的例子吧:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.io.Serializable; 

/** 
* 序列化一组对象 
* */
public class SerDemo1{ 
    public static void main(String[] args) throws Exception{ 
        Student[] stu = { new Student("hello", 20), new Student("world", 30), 
                new Student("rollen", 40) }; 
        ser(stu); 
        Object[] obj = dser(); 
        for(int i = 0; i < obj.length; ++i){ 
            Student s = (Student) obj[i]; 
            System.out.println(s); 
        } 
    } 

    // 序列化 
    public static void ser(Object[] obj) throws Exception{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream( 
                file)); 
        out.writeObject(obj); 
        out.close(); 
    } 

    // 反序列化 
    public static Object[] dser() throws Exception{ 
        File file = new File("d:" + File.separator + "hello.txt"); 
        ObjectInputStream input = new ObjectInputStream(new FileInputStream( 
                file)); 
        Object[] obj = (Object[]) input.readObject(); 
        input.close(); 
        return obj; 
    } 


class Student implements Serializable{ 
    public Student(){ 

    } 

    public Student(String name, int age){ 
        this.name = name; 
        this.age = age; 
    } 

    @Override
    public String toString(){ 
        return "姓名:  " + name + "  年龄:" + age; 
    } 

    private String name; 
    private int age; 
}
【运行结果】:

姓名: hello 年龄:20

姓名: world 年龄:30

姓名: rollen 年龄:40
分享到:
评论

相关推荐

    java中的IO整理完整版

    Java中的IO(Input/Output,输入/输出)是Java编程中不可或缺的一部分,它主要用于处理数据的读取和写入。以下是对Java IO的详细整理: 首先,Java中的`File`类是操作文件和目录的基础,它提供了许多方法来创建、...

    Java中的IO整理完整版

    在这个完整的Java IO整理版中,我们将深入探讨一些基本的IO概念和用法,主要包括文件操作、路径分隔符、文件删除、文件夹创建以及列出目录下的所有文件。 首先,创建新文件是Java IO中最基础的操作之一。在案例1中...

    Java核心知识整理.pdf

    Java核心知识整理 Java是一种广泛使用的面向对象编程语言,它具有跨平台、对象导向、简单易学等特点。作为Java工程师,需要掌握Java的多方面知识点,包括但不限于JVM(Java虚拟机)原理、Java内存模型、垃圾回收...

    java面试宝典2016整理版

    这只是Java面试宝典2016整理版中的一部分内容,完整的宝典将涉及更多主题,如多线程、集合框架、异常处理、IO流、网络编程、设计模式、JVM原理、数据库连接、性能优化等。理解和掌握这些知识点是成为一名合格Java...

    JAVA核心知识整理.pdf

    ### JAVA核心知识整理 ...以上内容覆盖了JAVA核心知识整理中的关键知识点,包括JVM的基础知识、垃圾回收机制、引用类型、GC垃圾收集器的选择、IO/NIO模型及其实现、类加载机制以及常见的集合类等。

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(完整清晰版)

    "韩顺平 Java 从入门到精通视频教程(全 94 讲)学习笔记整理(完整清晰版)" 本资源提供了一个完整的 Java 学习笔记,从基础到高级,涵盖了 Java SE、Java EE 和 Java ME 等方面的知识点。笔记的内容包括 Java ...

    Java面试题以及答案整理.pdf

    使用`java.io`包中的`FileReader`、`BufferedReader`等类进行文件读取,同时维护一个计数器记录行数。 19. **程序运行结果** 题目未给出具体程序,无法分析结果。 20. **抽象类和接口的区别** 抽象类是部分实现...

    java整理的一些资料

    "Java中的IO整理完整版.rar" 提供了Java输入/输出流系统的全面概述,包括文件操作、网络通信和数据序列化等方面的知识。 "Java经典算法40题 经典!.rar" 是一个算法练习合集,通过解决这些题目,开发者可以提升解决...

    2020最新JAVA核心知识点整理,完整.zip

    这份"2020最新JAVA核心知识点整理,完整.zip"压缩包包含了全面的Java核心知识点,旨在帮助程序员,尤其是准备面试的开发者,深入理解并掌握Java的基础与高级特性。 1. **Java基础**:这部分内容可能涵盖变量、数据...

    JavaGuide.pdf

    答:Java 中的 IO 模式有 BIO、NIO、AIO 等。 14. Java 中的 BIO、NIO、AIO 的区别是什么? 答:BIO 是阻塞式 IO,NIO 是非阻塞式 IO,AIO 是异步 IO。 Java 异常 15. Java 中的异常是什么? 答:Java 中的异常是...

    Java基础整理

    ### Java基础知识点整理 #### 第一章 搭建开发环境 **1.1 配置Java环境** 在配置Java开发环境之前,首先需要下载并安装JDK(Java Development Kit)。JDK是Java语言的核心组件,包含了Java运行时环境(JRE)及编译...

    java项目经验整理.zip

    "java项目经验整理.zip"这个压缩包很可能包含了某位开发者在Java项目开发过程中的学习总结和实践经验,对于想要深入理解Java或者提升Java项目开发能力的人来说,这是一个宝贵的资源。 "项目经验整理.pdf"可能是文档...

    java面试资源整理

    "labuladong的算法小抄官方完整版"可能包含了排序、搜索、图论、动态规划等经典算法的讲解和实例,这对于解决复杂问题和提升代码效率至关重要。 面试部分通常会包含对Java基础、多线程、集合框架、异常处理、IO流等...

    疯狂JAVA讲义(第2版).pdf

    根据提供的文件信息,“疯狂JAVA讲义(第2版).pdf”,这是一份关于Java编程语言的学习资料。从标题和描述来看,这份讲义旨在帮助读者深入理解和掌握Java编程技术,适合初学者以及有一定基础想要进一步提升技能的...

    JAVA联机坦克游戏0.31源码整理

    在这个项目中,“JAVA联机坦克游戏0.31源码整理”提供了一个基于Java语言开发的网络坦克对战游戏的源代码,适合Java初学者和游戏开发爱好者进行学习和研究。通过深入理解这个项目,我们可以了解到如何在Java环境下...

    JAVA架构师知识整理.pdf

    Java标准库中提供了丰富的I/O类库,其中包括传统的FileInputStream/FileOutputStream、BufferedReader/BufferedWriter等,这些类都是基于阻塞IO模型实现的。 **2.7 JAVANIO包** NIO(New I/O)是Java 1.4版本新增...

    java核心面试知识整理(架构师).pdf

    这部分内容可能涉及Java的输入/输出模型,包括阻塞IO、非阻塞IO、多路复用IO、信号驱动IO和异步IO模型。NIO的缓冲区、通道(Channel)、缓冲区(Buffer)、选择器(Selector)等概念也是重要的知识点。 4. JVM类...

    关于JAVA资料整理

    ### 关于JAVA资料整理 #### 知识点一:JAVA学习资源的重要性 在软件开发领域,Java作为一种广泛使用的编程语言,对于初学者来说,寻找合适的学习资源至关重要。这些资源不仅能够帮助初学者快速掌握Java的基础知识...

    JAVA架构师知识整理-副本.pdf

    Java架构师需要掌握的知识非常广泛,涵盖Java语言本身、JVM原理、IO/NIO、垃圾回收机制、类加载机制等多方面内容。接下来将详细整理这些知识点。 首先,Java架构师必须对Java编程语言有深入的理解。Java是一种面向...

    抓图程序 JAVA版 用JAVA写的抓图程序

    【标题】:“抓图程序 JAVA版 用JAVA写的抓图程序” 这个项目是基于Java语言开发的一款抓图工具,主要用于从网页中批量抓取图片并保存到本地形成一个文件夹。在网页抓取领域,这样的工具非常实用,尤其是在处理包含...

Global site tag (gtag.js) - Google Analytics