IO流: { ??? 文件的操作: f1.getAbsolutePath();//获取绝对路径 ????????????? f1.getPath();//获取相对路径 ????????????? f1.getName();//获取名称 ????????????? f1.getParent();//获取上层目录路径 无返回null ????????????? f1.length();获取文件长度(字节数) ????????????? f1.lastModified();//获取最后修改时间,毫秒值
????????????? f1.isDirectory();//判断是否为文件目录(就是里面还有值) ????????????? f1.isFile() ;// 判断是否是文件 ????????????? f1.exists(); //判断文件是否存在 ????????????? f1.canRead(); //判断是否可读 ????????????? f1.canWrite(); //判断是否可写 ????????????? f1.isHidden(); //判断是否隐藏 ????????????? f1.createNewFile(); //创建文件如果此文件不存在了就返回true 注意是创建文件其他都是创建文件夹 ????????????? f1.mkdir();? //创建文件夹如果文件夹存在就不创建 ????????????? f1.delete(); //删除f1文件路径下的文件 ????????????? f2.mkdirs();//创建文件夹如果文件夹不存在就不创建 如果路径不存在就创造路径
????????????? File f4=new File("D:java1"); ????????????? String[] list = f4.list(); //获取该目录下的所有文件 ????????????? File[] file=f4.listFiles();//获取指定目录下的所有文件目录带c://
????????????? FileSystemView fsv = FileSystemView.getFileSystemView(); ????????????? File com=fsv.getHomeDirectory();??? //获取桌面路径
????? int len;? byte[] by=new byte[1024]??? while ((a1=b1.readLine())!=null)? { b2.write(by,0,len); } //数据的读写代码 ???? *字符流(文本操作): ???????????? FileReader f1=new FileReader("tt1.txt");? //写出流 ???????????? FileWriter f2=new FileWriter("tt1.txt",true); //第2个如果为true那么就是往后追加 如果为flase就覆盖着写 写出的时候不存在会自动创建? 读入流
???? *字节流(图片,视频操作): ???????????? FileInputStream f3=new FileInputStream("tt1.txt");?? //字节写出 ???????????? FileOutputStream f4=new FileOutputStream("tt1.txt",true); //字节读入
???? 缓冲流(增加速度): ???????????? BufferedReader b1=new BufferedReader(new FileReader(f1));//缓冲写出流(文本文件) ???????????? BufferedWriter b2=new BufferedWriter(new FileWriter(f2));//缓冲读入流(文本文件)
???????????? BufferedInputStream cin=new BufferedInputStream(new FileInputStream(f3)); //缓冲写出流 (图片,视频操作) ???????????? BufferedOutputStream cout=new BufferedOutputStream(new FileOutputStream(f4));//缓冲读入流 (图片,视频操作)
???? 转换流(字节转字符<——>字符转字节): ????????????? InputStreamReader n1=new InputStreamReader(new FileInputStream(f3),"UTF-8"); //? 默认字符为系统自己设置 字节流-->字符流
????????????? InputStreamReader cin=new InputStreamReader(new FileInputStream(f3),"utf-8"); //以utf-8的方式写出? 字符流-->字节流 ????????????? OutputStreamWriter cout=new OutputStreamWriter(new FileOutputStream(f4),"gbk"); //以gbk的方式读入? 字符流-->字节流
???? 可读可写的(RandomAccessFile)流: ??????????????? RandomAccessFile r1=new RandomAccessFile(new File("图9.jpg"),"r"); //只读的方式? 写出文件 ??????????????? RandomAccessFile r2=new RandomAccessFile(new File("图10.jpg"),"rw"); //可写出可读入的方式 读写文件
??????????????? RandomAccessFile r3=new RandomAccessFile(new File("f1.txt"),"rw"); //可读可写的方式 操作txt类型文件 ??????????????? r3.seek(3);//吧指针移动读出位置的第3个地方 ??????????????? r2.write("abcd".getBytes()); //覆盖操作写是从头开始覆盖 原来是 1235678wqert? 覆盖前面之后操作完成;abcd5678wqert
???? 不可打开的文件类(ByteArrayOutputStream)流用于网络编程: ??????????????? ByteArrayOutputStream baos=new ByteArrayOutputStream(); //用来写入字符和字节文件
???? 标准输入控制台(了解就行): ????????????? InputStreamReader isr=new InputStreamReader(System.in);//标准从键盘读入 ????????????? BufferedReader br=new BufferedReader(isr); //流包起来 ????????????? String data= br.readLine();//数据读出 ???????????? 输出: ????????????? FileOutputStream fos=new FileOutputStream(new File("ff2_xg.txt")); ????????????? PrintStream ps=new PrintStream(fos,true);//true代表覆盖操作 ????????????? System.setOut(ps); //修改打印流吧打印出去的地方修改成输入到文件里面
?????? 流操作最后都必须执行 f1.close //流关闭操作
}
网络编程:TCP UDP URL {?? 获取传输过来的IP地址:sockt.getInetAddress().getHostAddress();
????? InetAddress inet1=InetAddress.getByName("127.0.0.1");????? //写入ip地址? 返回?? /127.0.0.1 ???????????????????????? InetAddress.getByName("www.baidu.com"); //写入域名??? 返回:? www.baidu.com/112.80.248.76 ???????????????????????? InetAddress.getByName("localhost");???? //写入本机??? 返回:? localhost/127.0.0.1 本机地址 ???????????????????????? InetAddress.getLocalHost() ;??????????? //写入本机??? 返回:? dzqdb1 /192.168.159.1 我现在电脑所对应局域网中的ip地址和名字 ???????????????????????? InetAddress.getByName("dzqdb1") ;?????? //写入本机名字 返回:? dzqdb1 /192.168.159.1 通过名字查找ip地址 ?????? 吧域名和名字分开: ??????? System.out.println("5号的名字为:"+inet5.getHostName());????? //获取名字 ??????? System.out.println("5号的ip地址为:"+inet5.getHostAddress()); //获取ip地址 ????? ????? ?????
??? TCP网络编程(传输文字):三次握手,四处挥手保证数据的传输稳定性 ??????? 客户端: ???????? Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),4444); //传输进来服务端的ip地址和端口号 ???????? OutputStream os = socket.getOutputStream(); //传输字节读入流 ???????? os.write("你好啊".getBytes());??? //数据传输到服务器? getBytes() 转换成byte字节流 ????????? socket.shutdownOutput();//告知服务器我数据已经传输完了,不在输出数据了? 不写此语句导致服务器端一直等待客户端做出回应 ???????? socket.close();//关闭连接 ???????? os.close();//关闭文件流
??????? 服务端: ??????? ServerSocket ss = new ServerSocket(9999);//自己服务器的地址 ??????? Socket sockt=ss.accept(); //(写出获取)接收来自客服端的sockt数据 有线程阻塞必须得等到数据传输进来之后才会往下执行 ???????????? InputStream is = sockt.getInputStream();? //(读入)传输进来的数据 ???????????? System.out.println("收到了来自于"+sockt.getInetAddress().getHostAddress()");//获取传输过来的ip地址 ???????????? ByteArrayOutputStream baos=new ByteArrayOutputStream();//吧所有字符串都读取进来然后读取完成之后再拼接成一个字符串 ????????????? byte[] buff=new byte[5]; ????????????? int len; ???????????? while((len= is.read(buff))!=-1) ???????????? { ???????????????? baos.write(buff,0,len); ???????????? } ??????????? System.out.println(baos.toString());//吧传输过来的字节流打印出来 ??????????????? is.close(); //读入关闭 ??????????????? sockt.close();//关闭接收数据 ??????????????? baos.close(); //关闭流 ??????????????? ss.close(); //关闭服务器
??? TCP网络编程(传输图片.视频等): ????????? 客户端: ?????????? Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),4444); //服务端的ip地址,端口 ?????????? OutputStream out = socket.getOutputStream();//输出流 ?????????? FileInputStream stream = new FileInputStream(new File("C:\\Users\\hbl\\Desktop\\lo流\\图9.jpg"));//需要读取的文件 ?????????? byte[] by=new byte[1024]; ?????????? int len; ?????????? while((len=stream.read(by))!=-1) ?????????? { ?????????????? out.write(by,0,len); ?????????? } ??????????? socket.shutdownOutput();//告知服务器我数据已经传输完了,不在输出数据了? 不写此语句导致服务器端一直等待客户端做出回应 ??????????? //关闭操作
??????? 服务端: ????????? ServerSocket ss = new ServerSocket(9999);//自己服务器的地址 ????????? Socket sockt=ss.accept(); //接收来自客服端的sockt数据 ????????? InputStream is = sockt.getInputStream();? //读入传输进来的数据 (图片和视频版)
????????? byte[] buff=new byte[5]; ????????? int len; ????????? ByteArrayOutputStream baos=new ByteArrayOutputStream();//吧所有字符串都读取进来然后读取完成之后再拼接成一个字符串 ????????? while((len= is.read(buff))!=-1) ????????? { ????????????? baos.write(buff,0,len); ????????? } ????????? System.out.println(baos.toString());//输出 ????????? //关闭流操作
????????? 服务端回应数据操作: ?????????????? 回应数据(在代码后面写): ????????????????? OutputStream os=accept1.getOutputStream(); ????????????????? os.write("数据我已经收到,非常好看!".getBytes());//转换字节发送给服务器
????????? DatagramSocket socket=new DatagramSocket(); //连接使用UDP方式
??? 使用UDP网络格式发送数据:(不管对方有没有接收到都吧包发给对方) ??????? 客户端: ??????????? DatagramSocket socket=new DatagramSocket(9999); //指定端口号 ??????????????????? 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())); //第一个是数据,第2个是从哪里开始,第三个是数据的长度
??????????????????? socket.close();
???????? 服务端: ???????????????? DatagramSocket socket=new DatagramSocket(); //连接使用UDP方式 ????????????????? String str="我是以UDP方式发送的导弹"; ????????????????? byte[] data=str.getBytes(); //转换成字节流
????????????????? DatagramPacket packet=new DatagramPacket(data,0,data.length,InetAddress.getByName("127.0.0.1"),9999); ????????????????? // 封装的数据包???????????????????????????? 发送的文件/从哪开始发/到那结束发送?? 服务器ip地址、端口号
????????????????? socket.send(packet); //发送数据包 ????????????????? socket.close();//关闭发送
?
}
?
|