自己写的题目:用分割流把一个Java文件分割读取,打印出每次读取的内容,要求每次读取打印500个字节。

package fenGeLiu;

import java.io.*;

public class lizi1 {

public static void main(String[] args) throws Exception{

//分割流:可以将大文件分割为小文件,然后在使用的时候,

//又可以将若干个小文件组合成一个大文件来使用

File File=new File("src/fenGeLiu/copy.java");

int zongDaXiao=(int)File.length();

System.out.println(zongDaXiao);

//startIndex:定义文件开始读取的位置下标,索引

int startIndex=0;

//lastIndexOrLength:默认每次读多少内容的长度或最后的索引

int lastIndexOrLength=500;

//ciShu:这个文件读的次数

int ciShu=(zongDaXiao/lastIndexOrLength)+1;

//遍历这个读的次数:

for(int i=0;i

startIndex=i*lastIndexOrLength;

//startIndex:最后一次读的内容

if(i!=ciShu-1){

//如果i不为可以达到的最大值,就一直-500(这里的lastIndex)

//为的是让lastIndexOrLength在最后可以求出其部分的最后的下标

//zongDaXiao:总大小

zongDaXiao-=lastIndexOrLength;

}else {

lastIndexOrLength=zongDaXiao;

}

System.out.println("第"+(i+1)+"次读取的内容为:");

//调用方法:

fenGeFangFa(File.getAbsolutePath(),

startIndex,lastIndexOrLength);

//File.getAbsolutePath()为路径

//startIndex:为开始的要截取部分的最小的索引,下标

//lastIndex:为最后的要截取部分的最大的索引,下标

}

/*File f=new File("copy.java");

File f1=new File("ww");

//执行一个位置,设置读取为只读

//1600个字节大小

//每次读300个,要读6次

System.out.println(f.length());

//求一下要读几次

int daxiao=(int)f.length();

int meicidu=600;

int start=0;

int duojici=(daxiao/meicidu)+1;

for(int i=0;i

start=meicidu*i;//0,600,1200.....6000 235

if(i!=(duojici-1)){//i!=10

daxiao-=meicidu;//6235-600-600-600...10=235

}else{

meicidu=daxiao;

}

System.out.println("第"+(i+1)+"次读取的内容为");

File ff=new File(f1,i+".java");

putong1(f,start,meicidu,ff);

}

*/

}

private static void fenGeFangFa(String FileSrc,

int startIndex,int length)

throws FileNotFoundException,

IOException {

RandomAccessFile readFengGe=new RandomAccessFile(FileSrc,"r");

readFengGe.seek(startIndex);

byte[] byteArray=new byte[length];

readFengGe.read(byteArray);

System.out.println(new String(byteArray));

readFengGe.close();

}

//下面的是可以在主函数直接调用的方法:

//private static void fenGeReadfangFa(File read,int startIndex,

//int lengthSize,File write) throws FileNotFoundException,

//IOException {

//

//

//

//

//RandomAccessFile readFenGe=new RandomAccessFile(read,"r");

r:是固定不可变的“key”一般的,代表read的部分

//RandomAccessFile writeFenGe=new RandomAccessFile(write,"rw");

//

rw:是固定不可变的“key”一般的,代表read后的write的部分

//readFenGe.seek(startIndex);//设置读取的位置是100的位置

//byte[] byteArray=new byte[lengthSize];

//int len;

//readFenGe.read(byteArray);

//writeFenGe.write(byteArray);

//

//readFenGe.close();

//}

}

储存对象的姓名等内容,之后就去读取和打印读取的内容(要求单个后单行等的打印,与用循环遍历的方法把储存到自己创建的new.txt的文件中的所有的对象【可以用“点某个文件,之后点鼠标的右键,之后点最后一个选项,之后就可以改文件的格式,让txt和java文件都为UTF-8等的格式,防止中文乱码,但设置“chengJi(成绩)”等变量为transient,用transient来让成绩(chengJi)不参与序列化,这样的话存在txt文件后就会仍出现乱码等,以上是个人的理解或猜测的仍出现乱码的原因等】:

package fenGeLiu;

import java.io.*;

import java.util.Date;

public class duiXangLiu {

public static void main(String[] args) throws Exception{

//ObjectInputStream:对象输入流

//ObjectOutputStream:对象输出流

//特点:

//以前的流可以存储文本,其他类型数据,但是不可以存储

//对象,这个流唯一特点就是可以存储对象。

//为什么要存储对象:

//因为在传输内容的时候,如果传输的是普通流,一旦

//内容被获取到,其他人可以通过转码将数据转会源码,

//但是对象流一旦被别人获取到,别人要需要将其转换为相应

//的对象格式,才可以看到里面的内容

student duiXiang1=new student(4,"诗书画唱",100.0f);

student duiXiang2=new student(5,"三连",99.9f);

student duiXiang3=new student(6,"关注",99.9f);

File f=new File("new.txt");

//传入地址

FileOutputStream fis=new FileOutputStream(f);

//传入字节流

ObjectOutputStream oos=new ObjectOutputStream(fis);

oos.writeObject(duiXiang1);

oos.writeObject(duiXiang2);

oos.writeObject(duiXiang3);

oos.writeObject(null);

oos.close();

System.out.println("存储成功");

//——————————————————————————————

读单个对象:

File FileOne=new File("new.txt");

FileInputStream byteInputOne=new FileInputStream(FileOne);

//传入字节输入流:

ObjectInputStream byteDuiXiangInput

=new ObjectInputStream(byteInputOne);

Object duiXiangOne=byteDuiXiangInput.readObject();

Object duiXiangTwo=byteDuiXiangInput.readObject();

//用“(student)”的转型,将读取到的内容转为原先的类型:

student duiXiangOneOld=(student)duiXiangOne;

student duiXiangTwoOld=(student)duiXiangTwo;

byteDuiXiangInput.close();

System.out.println("打印第一行的对象的内容为\t编号:"

+duiXiangOneOld.bianHao+";姓名 : "

+duiXiangOneOld.name+";成绩 : "+duiXiangOneOld.chengJi);

System.out.println("打印第二行的对象的内容为\t"

+" 编号: "

+duiXiangTwoOld.bianHao+";名字: "

+duiXiangTwoOld.name+";成绩"

+ "(被设置为不显示\n真实成绩,默认为0.0):"

+duiXiangTwoOld.chengJi+"\n");

//System.out.println(duiXiangTwo.toString());

//——————————————————————

//下面是打印所有的存在new.txt的文件的对象的内容:

File File=new File("new.txt");

//传入字节输入流:

FileInputStream byteInputAll=new FileInputStream(File);

//duiXiangInput【“拼音+英文”的自己的命名】(对象输入流)。

ObjectInputStream duiXiangInput

=new ObjectInputStream(byteInputAll);

Object duiXiang="";

while((duiXiang=duiXiangInput.readObject())!=null){

System.out.println(duiXiang.toString());

}

duiXiangInput.close();

}

}

//——————————————————————————

//下面为知识点:

//一个类可以实现多个接口,接口一旦被实现后就必须实现接口中的抽象方法

//serializable:

//英[ˈsɪərɪəlaɪzəbl]

//美[ˈsɪˌriəˌlaɪzəbl]

//[词典]【计】可串行化的;

//Serializable:序列化接口,它没有其他的作用,接口中也没有抽象方法

//transient关键字介绍:如果想让某个对象的某个字段不参与序列化,

//可以加上transient关键字进行修饰。

//transient英[ˈtrænziənt]

//美[ˈtrænʃnt]

//adj.短暂的; 转瞬即逝的; 倏忽; 暂住的; 过往的; 临时的;

//n.暂住某地的人; 过往旅客; 临时工;

//——————————————————————

class student implements Serializable{

int bianHao;

String name;

transient float chengJi;

//这里用transient来让成绩(chengJi)不参与序列化,

//就是后面用toString方法返回的时候,

//不会打印出传入的真实成绩放的内容。

public student(int bianHao, String name, float chengJi) {

this.bianHao = bianHao;

this.name = name;

this.chengJi = chengJi;

}

@Override

public String toString() {

return "student [bianhao=" +

bianHao + ", name=" + name + ", chengji("

+ "被transient设置为不能打印"

+ "\n出来的成绩默认为0.0):" +chengJi+ "]\n";

}

}

这里的”行“可以理解为”个“的意思:

java切割输入流_Java分割流,对象流,参与序列化,分割读取文件,对象输入或输出流等【诗书画唱】...相关推荐

  1. java切割输入流_java IO流之文件切割两例(含Properties 用法)

    package cn.itcast.io.p1.splitfile; import java.io.File; import java.io.FileInputStream; import java. ...

  2. java缓冲输入流_java _io_字符缓冲流的输入、输出

    新增方法: 输入: BufferedReader breader=new BufferedReader(Reader reader); .readLine()读取一行内容,返回字符串 输出: Buff ...

  3. java byte缓存_Java 之 字节缓冲流

    一.字节缓冲输出流 java.io.BufferedOutputStream extends OutputStream BufferedOutputStream:字节缓冲输出流. 继承自父类的共性成员 ...

  4. java字符的输入流_Java:字节流和字符流(输入流和输出流)

    InputStream是抽象基类,所以它不可以创建对象,但它可以用来"接口化编程",因为大部分子类的函数基类都有定义,所以利用基类来调用函数. FileInputStream是用来 ...

  5. java缓冲输入流_java入门 -- Java I/O(五)输入缓冲流BufferedInputStream

    /* * 缓冲输入字节流: * 作用:提高输入效率,比缓冲字节流跟高 * 输入字节流体系: * ----| InputStream 抽象列 * ---------| FileInputStream 读 ...

  6. java切割输入流_IO流之切割合并文件

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 切割文件,思路就是 以每块多大的分量去切割成多少块, 比方说 1024 的 文件以 500 切,就得切成 3块,那么就 ...

  7. java中--《_Java中的IO流(五)

    当需要直接把信息输出到文件中的时候,并且想要每次输入完成后立即把信息输出到文件中,演示如下 1 private static void function_demo2() throwsIOExcepti ...

  8. java有道_java中的各种流(老师的有道云笔记)

    内存操作流-字节 之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操作流.此时得使用内存流完成内存的输入和输出操作. 如果程序运行过程中要产生一些临时文件,可采用虚拟文 ...

  9. java buffer 记事本_Java实现记事本|IO流/GUI

    Java实现记事本 题目 利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上: 允许对文字内容进行编辑,并可以保存到文件. 代码 class notPadcontain ...

最新文章

  1. Python wordcloud库使用说明
  2. 影响数据库性能的因素
  3. 学习Python语言 基础语法:变量的基本使用
  4. 阿里云服务器CentOS6.9 nexus私服使用
  5. 第七章 线性回归预测模型
  6. 【CSON原创】 图片滑动展开效果发布
  7. SDK,NDK,ADT工具下载常用地址
  8. 双鉴探测器是哪两种探测方式结合_老师傅带你看懂火灾探测器的种类和基本原理,看完涨知识了...
  9. java 取对象的类_Java中通过Class类获取Class对象的方法详解
  10. 寒武纪官宣25亿美元估值融资,也有AI芯片公司要被收购了
  11. **网页静态化解决方案_Freemarker*
  12. 键盘快捷键锁定计算机,用于锁定键盘的键盘快捷键
  13. 计算机应用基础word的课件,计算机应用基础之word2010课件
  14. 虚函数表和虚函数表指针的汇编分析
  15. boost.asio 源码剖析
  16. 日系插画学习笔记(二):结构与透视
  17. 智慧工地 | 数字孪生楼宇施工管理平台
  18. WPViewPDF Delphi 和 .NET 的 PDF 查看组件
  19. orcad capture 快速制作原理图库
  20. 爬虫xx网站论坛的帖子源码分享

热门文章

  1. SQL SERVER 排名 函数
  2. python zipfile安装_python2.7 zipfile 的简单用法
  3. 产品经理成长的不利因素 from俞军
  4. 正则表达式 只能输入正整数、只能输入数字
  5. 树莓派4B+wifi远程无线连接
  6. LaTeX 插入图片失败
  7. Emscripten之JS与C/C++互相调用
  8. 服务器硬盘使用率应低于多少
  9. openkruise 缩容_OpenKruise - 云原生应用自动化引擎正式开源
  10. 模型服务,GPU,CUDNN报错