java基础--IO流

例子1

package com.atguigu.java3;

import org.junit.Test;

import java.io.File;

/**
 * @author shkstart
 * @create 2021-12-{DAY} 21:27
 */
public class FileTest {

    @Test
    public void test1(){

        //构造器1
        File file1 = new File("hello.txt");
        System.out.println(file1);

        File file2 = new File("D:\\workidea\\JavaSenior\\he.txt");
        System.out.println(file2);

        //构造器2
        File file3 = new File("D:\\workidea","JavaSenior");
        System.out.println(file3);

        //构造器3
        File file4 = new File(file3,"hi.txt");
        System.out.println(file4);
    }
    
}

例子10

package com.atguigu.java3;

import org.junit.Test;

import java.io.FileInputStream;
import java.io.InputStreamReader;

/**
 * @author shkstart
 * @create 2021-12-{DAY} 17:01
 */
public class InputStreamReaderTest {

    @Test
    public void test1() throws Exception{

        FileInputStream fis = new FileInputStream("hello.txt");
//        InputStreamReader isr = new InputStreamReader(fis);     //使用系统默认的字符集
        InputStreamReader isr = new InputStreamReader(fis,"UTF-8");

        char[] cbuf = new char[20];
        int len;
        while((len=isr.read(cbuf))!=-1){
            String str = new String(cbuf, 0, len);
            System.out.println(str);

        }

        isr.close();

    }

}

例子11

package com.atguigu.java3;

import org.junit.Test;

import java.io.*;

/**
 * @author shkstart
 * @create 2021-12-{DAY} 17:01
 */
public class InputStreamReaderTest {
    

    @Test
    public void test2() throws Exception {
        //造文件,造流
        File file1 = new File("hello.txt");
        File file2 = new File("hello_gbk.txt");

        FileInputStream fis = new FileInputStream(file1);
        FileOutputStream fos = new FileOutputStream(file2);

        InputStreamReader isr = new InputStreamReader(fis,"utf-8");
        OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk");

        //2.读写过程
        char[] cbuf = new char[20];
        int len;
        while((len = isr.read(cbuf))!=-1){
            osw.write(cbuf,0,len);
        }

        //3.关闭资源
        isr.close();
        osw.close();
    }


}

例子12

person

package com.atguigu.java3;

import java.io.Serializable;

/**
 * Person需要满足如下的要求,方可序列化
 * 1.需要实现接口:Serializable
 *
 * @author shkstart
 * @create 2021-12-{DAY} 18:42
 */
public class Person implements Serializable {

    public static final long serialVersionUID = 34432312324L;

    private String name;
    private int age;

    public Person() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

ObjectInputOutputStreamTest

package com.atguigu.java3;

import org.junit.Test;

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

/**
 * @author shkstart
 * @create 2021-12-{DAY} 18:24
 */
public class ObjectInputOutputStreamTest {

    /*
    * 序列化过程:将内存中的java对象保存到磁盘中或通过网络传输出去
    *使用ObjectOutputStream实现
    * */
    @Test
    public void testObjectOutputStream() throws Exception{
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.dat"));

        oos.writeObject(new String("我爱北京天安门"));

        oos.flush();

        //要想把Person类进行序列化,需要满足一些条件
        oos.writeObject(new Person("网名",23));

        oos.flush();        //刷新操作

        oos.close();
    }

    //反序列化的过程

    @Test
    public void testObjectInputStream() throws Exception{
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.dat"));

        Object obj = ois.readObject();

        String str = (String) obj;

        Person p = (Person) ois.readObject();

        System.out.println(str);
        System.out.println(p);

        ois.close();

        System.out.println(str);


    }


}

例子13

package com.atguigu.java3;

import org.junit.Test;

import java.io.File;
import java.io.RandomAccessFile;

/**
 * RandomAccessFile的使用:
 * 1.RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DataOutput接口
 * 2.RandomAccessFile既可以作为一个输入流,又可以作为一个输出流
 * @author shkstart
 * @create 2021-12-{DAY} 19:09
 */
public class RandomAccessFileTest {

    @Test
    public void test1() throws Exception{

        RandomAccessFile raf1 = new RandomAccessFile(new File("img.png"),"r");
        RandomAccessFile raf2 = new RandomAccessFile(new File("img2.png"),"rw");

        byte[] buffer = new byte[1024];
        int len;
        while((len=raf1.read(buffer))!=-1){
            raf2.write(buffer,0,len);
        }

        raf1.close();
        raf2.close();

    }

    @Test
    public void test2() throws Exception{
        RandomAccessFile raf1 = new RandomAccessFile("hello.txt","rw");

        raf1.write("xyz".getBytes());

        raf1.close();

    }


}

例子14

package com.atguigu.java3;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 *
 * @author shkstart
 * @create 2021-12-{DAY} 18:30
 */
public class InetAddressTest {
    public static void main(String[] args) {
        try {
            InetAddress inet1 = InetAddress.getByName("192.168.10.14");
            System.out.println(inet1);

            InetAddress inet2 = InetAddress.getByName("www.atguigu.com");
            System.out.println(inet2);

            //表示本机
            InetAddress inet3 = InetAddress.getByName("127.0.0.1");
            System.out.println(inet3);

            //获取本机的IP地址
            InetAddress inet4 = InetAddress.getLocalHost();
            System.out.println(inet4);

            //getHostName()
            System.out.println(inet2.getHostName());
            System.out.println(inet2.getHostAddress());


        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

例子15

package com.atguigu.java3;

import org.junit.Test;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

/**
 * @author shkstart
 * @create 2021-12-{DAY} 18:52
 */
public class TCPTest1 {

    //客户端
    @Test
    public void client() throws Exception{
        //1.创建Socket对象,指明服务器端的ip和端口号
        InetAddress inet = InetAddress.getByName("127.0.0.1");
        Socket socket = new Socket(inet, 8899);
        //2.获取一个输出流,用于输出数据
        OutputStream os = socket.getOutputStream();
        //3.写出数据的操作
        os.write("你好,我是客户端mm".getBytes(StandardCharsets.UTF_8));

        //4.资源关闭
        os.close();
        socket.close();
    }

    //服务端
    @Test
    public void server() throws Exception{
        //1.创建服务器端的ServerSocket,指明自己的端口号
        ServerSocket ss = new ServerSocket(8899);
        //2.调用accept()表示接收来自于客户端的socket
        Socket socket = ss.accept();
        //3.获取输入流
        InputStream is = socket.getInputStream();
        //4.读取输入流的数据
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[5];
        int len;
        while((len=is.read(buffer))!=-1){
            baos.write(buffer,0,len);

        }

        System.out.println(baos.toString());
        System.out.println("收到了"+socket.getInetAddress().getHostAddress());
        //5.关闭资源
        baos.close();
        is.close();
        socket.close();
        ss.close();

    }

}

例子16

package com.atguigu.java3;

import org.junit.Test;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;

/**
 * @author shkstart
 * @create 2021-12-{DAY} 19:13
 */
public class UDPTest {
    //发送端
    @Test
    public void sender() throws Exception{

        DatagramSocket socket = new DatagramSocket();

        String str = "我是UDP方式发送的导弹";
        byte[] data = str.getBytes(StandardCharsets.UTF_8);
        InetAddress inet = InetAddress.getLocalHost();
        DatagramPacket packet = new DatagramPacket(data,0,data.length,inet,9090);

        socket.send(packet);
        socket.close();
    }

    //接收端
    @Test
    public void receiver() throws Exception{

        DatagramSocket socket = new DatagramSocket(9090);

        byte[] buffer = new byte[100];
        DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);

        socket.receive(packet);
        System.out.println(new String(packet.getData(),0,packet.getLength()));

        socket.close();
    }

}

例子17

package com.atguigu.java3;

import java.net.URL;

/**
 * @author shkstart
 * @create 2021-12-{DAY} 19:42
 */
public class URLTest {
    public static void main(String[] args) throws Exception{
        URL url = new URL("http://localhost:8080/examples/beauty.jpg?username=Tom");
        //public String getProtocol()获取该URL的协议名
        System.out.println(url.getProtocol());
        //public String getHost()  获取该URL的主机名
        System.out.println(url.getHost());
        //public String getPort()  获取该URL的端口号
        System.out.println(url.getPort());
        //获取该URL的文件路径
        System.out.println(url.getPath());
        //获取该URL的文件名
        System.out.println(url.getFile());
        //获取该URL的查询名
        System.out.println(url.getQuery());
    }

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值