JAVA-高级编程-IO流

IO流

public class IOTest {
    public static void main(String[] args) {
        File file=new File("hello.txt");//此时是相对于工程下的路径
        File file1=new File("\\GenericM\\hello.txt");
    }
    @Test
    public void tset(){
        //1.实例化File类对象,指明要操作的文件
        File file=new File("hello.text");//相对于module下的目录
        //读入的文件必须存在,否则会报不能存在的错误
        //使用操作的流
        Reader reader=null;
        try {
            reader=new FileReader(file);
            int read;//read()返回的是读取的每个字符的ASCII码值,需要强转成字符
            //数据的读入
            while ((read=reader.read())!=-1){//read()如果达到末尾返回-1
                System.out.println((char) read);
            }
        }catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader!=null) {
                try {
                    reader.close();//关闭流
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //对read()操作升级,使用重载方法
    @Test
    public void test2(){
        File file=new File("hello.txt");
        FileReader fileReader=null;
        try {
            fileReader=new FileReader(file);
            //file读入操作
            char[] chars=new char[100];
            int len;
            StringBuilder stringBuilder=new StringBuilder();
            while ((len=fileReader.read(chars))!=-1){//重载的read方法会返回每次读取字符的个数,将字符数据存入char[]
               // stringBuilder.append(chars);这样写直接放入是错误的,因为他不会重新创建char[]而是每次读取修改char[]
                //未修改的数据也会被读取出来
                for (int i=0;i

网络编程

/**
 * IP:唯一的标识internet上的计算机
 * 在JAVA中使用InetAddress类代表IP
 * IP分类:IPv4和IPv6;万维网和局域网
 * 域名:www.baidu.com
 * 本地回路地址:127.0.0.1  对应着localhost
 *
 *
 * 端口号:表示计算机中正在运行的进程,不同的进程有不同的端口号
 *
 * 端口号与IP地址的组合得出一个网络套接字:Socket
 *
 *
 * 传输层TCP与UDP协议对比:
 */
public class InetTest {
    public static void main(String[] args) {
        try {
            InetAddress byName = InetAddress.getByName("192.168.0.1");
            InetAddress in=InetAddress.getByName("www.baidu.com");
            InetAddress inn=InetAddress.getByName("127.0.0.1");
            InetAddress.getLocalHost();//获取本机ip地址

            inn.getHostAddress();//获取地址
            inn.getHostName();//获取域名

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

    /**
     * 实现TCP网络编程
     */
    @Test
    public void test() throws IOException {
        //客户端
        InetAddress i=InetAddress.getByName("127.0.0.1");
        Socket s=new Socket(i,8899);
        OutputStream o=s.getOutputStream();
        o.write("你好我是客户端".getBytes());
        s.shutdownOutput();//如果需要接受服务端的信息,则需要调用此方法,来告诉服务端数据传输完毕,
        // 否则服务端会一直等待客户端数据的传输
        o.close();
        s.close();

    }
    @Test
    public void test1() throws IOException{
        //服务端
        ServerSocket s=new ServerSocket(8899);//服务socket只需要指明自己的端口号
        Socket accept = s.accept();//接受客户端socket
        InputStream i=accept.getInputStream();
        //不建议这样写,传入字符在内存中解码有可能乱码
//        byte[] bytes=new byte[1024];
//        int len;
//        while ((len=i.read(bytes))!=-1){
//            System.out.println(new String(bytes,0,len));
//        }

        //将字节放入此流中等执行完统一转换为字符 就不会出现乱码
        ByteArrayOutputStream by=new ByteArrayOutputStream();
        byte[] b =new byte[1024];
        int len;
        while ((len=i.read(b))!=-1){
            by.write(b,0,len);
        }
        String s1 = by.toString();
        System.out.println(s1);

        s.close();
        accept.close();
        i.close();
        by.close();
    }

    /**
     * UDP网络编程
     * 客户端
     */

    @Test
    public void test4() throws IOException{
        DatagramSocket socket=new DatagramSocket();
        String str="我是UDP方式发送的导弹";
        byte[] bytes=str.getBytes();
        InetAddress ina=InetAddress.getByName("127.0.0.1");
        DatagramPacket packet=new DatagramPacket(bytes,0,bytes.length,ina,8899);

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

    }
    /**
     * 接收端
     */
    @Test
    public void test5() throws IOException{
        DatagramSocket s=new DatagramSocket(8899);
        byte[] bytes=new byte[1024];
        DatagramPacket packet=new DatagramPacket(bytes,0,bytes.length);
        s.receive(packet);
        System.out.println(new String(packet.getData(),0,packet.getLength()));
    }
     /**
     * URL编程:统一资源定位符
     * 格式:
     *      http://localhost:8080/examples/beauty.jpg?username=TOM
     *      协议      主机  端口号 资源地址            参数列表
     *      
     */

    @Test
    public void test6() throws IOException{
        URL url=new URL("http://localhost:8080/");
        //一些方法
        url.getProtocol();//获取url的协议名
        url.getPort();//获取url端口号
        url.getHost();//获取url主机名
        url.getPath();//获取url文件路径
        url.getFile();//获取url文件名
        url.getQuery();//获取url的查询名 username=TOM
        
        HttpURLConnection http= (HttpURLConnection) url.openConnection();
        http.connect();
        InputStream inputStream = http.getInputStream();
        byte[] bytes=new byte[1024];
        int len;
        while ((len=inputStream.read(bytes))!=-1){
            
        }
        inputStream.close();
        http.disconnect();
    }
}

你可能感兴趣的:(java)