python的io 与java的io流的使用及对象的序列化

本文详细介绍Java IO流的应用,包括字节流与字符流的具体操作,如文件复制与对象序列化等,并提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 io的使用
采用流技术:
字节
inputStream/outputStream
字符
reader/writer
首先介绍的是java的io的使用方法 在下面的案例中d:/demo这些是你本地的路径,需要你自己去创建的

public class Testio {
    public static void main(String[] args) {
        //输入输出选择字符
        try {
//            InputStream in =new FileInputStream("D:/demo/a/1.jpg");//池塘
//            OutputStream out=new FileOutputStream("D:/demo/b/1.jpg");//新池塘
//
//            byte[] buffer=new byte[1024];
//            int len=0;
//
//            //泵
//            while(true){
//                len=in.read(buffer);//管道
//                if(len==-1){
//                    break;
//                }
//                out.write(buffer,0,len);
//                out.flush();
//            }
//            out.close();
//            in.close();
//            System.out.println("ok");
            //字节流的读写
            BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream("D:/demo/a/介绍.txt"),"gbk"));
            PrintWriter out=new PrintWriter(new OutputStreamWriter(new FileOutputStream("D:/demo/b/介绍.txt"),"utf-8"));

            String  str=null;
            while (true){
                str=in.readLine();
                if(str==null){
                    break;
                }
                out.println(str);
                out.flush();
            }
            out.close();
            in.close();
            System.out.println("ok");

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


    }
}
各个方法的使用可以参照他的api 这个简单的案例就把各个io的使用整合到了一起
f=open("D:/demo/a/介绍.txt")
of=open("D:/demo/b/介绍p.txt","w")
for line in f:
   of.write(line)
print("ok")
# 用默认的缓冲区
t=open("D:/demo/a/1.jpg","rb")
t1=open("D:/demo/b/123.jpg","wb")
for tu in t:
    t1.write(tu)
print("ok")

#自定义的缓冲区
t=open("D:/demo/a/1.jpg","rb")
t1=open("D:/demo/b/1234.jpg","wb")
t.seek(0,2);#文件定位
# tell()方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。
# seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
# 如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
size=t.tell();
t.seek(0,0)
ofsize=0;
n=0;
while True:
    if ofsize>size:
        break;
    b=t.read(10240)
    t1.write(b)
    ofsize+=10240;
    n+=1;
print(n)
#截取的一半
t=open("D:/demo/a/1.jpg","rb")
t1=open("D:/demo/b/1234.jpg","wb")
t.seek(0,2);
size=t.tell();
t.seek(0,0)
ofsize=size/3;
n=0;
while True:
    if ofsize>size:
        break;
    b=t.read(10240)
    t1.write(b)
    ofsize+=10240;
    n+=1;
print(n)
#对象的序列华
import  pickle
class Person:
    def __init__(self,name=None,age=None):
        self.name=name;
        self.age=age;
    def __str__(self):
        return "卡吉瑟的卡号大 啊撒旦"
  #序列化对象,把对象保存到本地
p=Person()
pickle._dump(p,open("D:/demo/b/Person.data","wb"))
print(p)
#把 本地的对象取出来
p1=pickle.load(open("D:/demo/b/Person.data","rb"))
print(p1)

#把文件夹中的文件放到另一个里面
#方法一:
import shutil
old="D:/demo/a"
new=old[len(old)-1:]
new1="D:/demo/b/"
new1=new1+new
shutil.copytree(old, new1)

在上述的案例中每一个案例中都有相对应的解释大家可以参照去理解


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值