JAVA实验IO流
是遇到了‘\r’换行符的话,就跳出循环!
break;
fileName += (char) readByte;
//通过循环依次把readByte
转换成char型后,组成字符串,就是文件的路径了!
}
// Reads the file and prints it to the System.out stream.
char[] buffer = new char[20];
//声明一个字节数组
FileReader reader = new FileReader(fileName);//使用filename创建
FileReader对象
while(true) {
int length = reader.read(buffer);
file.createNewFile(); } fr = new FileWriter(file); for (int i = 100; i < 1000; i++) {
a = i / 100; b = i / 10 % 10; c = i % 10; j = a * a * a + b * b * b + c * c * c; if (i == j) {
运行结果:
实验题 4 "水仙花数"。所谓"水仙花数"是指一个 3 位数,其各位数字立方和等 于该数本身。例如,153 就是一水仙花数,因为 153 = 13+53+33 。
请计算出 100 万以内所有的水仙花数,并以一行一个水仙花数的格式保存到 文本文件 data.txt 中。输出格式如下:
153 = 1*1*1 + 5*5*5 + 3*3*3 代码:
String str=a+"*"+a+"*"+a+"+"+b+"*"+b+"*"+b+"+"+c+"*"+c+"*"+c;
String s = i+"="+str+"\t\n"; fr.write(s); cnt++; } } fr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return cnt; } public static void main(String[] args) { // TODO Auto-generated method stub ShuiXianShu ss = new ShuiXianShu(); int n = count(); System.out.println("共有" + n + "个水仙数!"); }
File f2=new File("D://","output.txt"); if(!f1.exists()) f1.createNewFile(); if(!f2.exists()) f2.createNewFile(); FileReader in=new FileReader(f1); FileWriter out=new FileWriter(f2); while((b=in.read(cBuffer,0,255))!=-1){ String str=new String(cBuffer,0,225); out.write(str); } in.close(); out.close(); } }
}
}
实 验 题 3 设 计 一 个 类 FileRWTest,实 现 从 input.txt 文 件 中 读 入 数 据 到 字 符 数 组
cBuffer 中,然后再写入到文件“output.txt”中。
[基本要求] 编写完整程序。
package cn.shangji.sjIO; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileRWTest {
public static void main(String[] args){ File f1=new File("d:\\","Application2.txt"); try{ if(!f1.exists()) f1.createNewFile(); BufferedReader in2=new BufferedReader(new
package cn.shangji.sjIO; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class ShuiXianShu {
/** * @param args * @throws IOException */
try {
String fileName = "";
while(true) {
int readByte = System.in.read(); //该语句每次只能读取一个字节,
此处readByte是放回该字符的ASCII码值
if(readByte == -1 || readByte == '\r')//当read()找不到字符或者
private static int a, b, c; private static int cnt = 0; static FileWriter fr = null; public static int count() {
int j; try {
File file = new File("d://", "data.txt"); if (!file.exists()) {
if(b[i]>'a'&&b[i]<'z'){ k++;
} else if(b[i]>='A'&&b[i]<='Z'){
n++; } } String STR=str.toUpperCase(); bfw.write(STR+'\n'); } bfr.close(); bfw.close(); System.out.println("大写字母个数为:"+n); System.out.println("小写字母个数为:"+k);
}
} catch (IOException e) {
e.printStackTrace();
//异常定位输出……由于System.in.read()只
能每次读取一个字节,接收一个字符,……
}
//汉字在java里边是一个占两个字节的字符,所以的话,
读取汉字会乱码!在该运行程序时,不能带有汉字的路径。
public static void main(String[] args) throws IOException { // TODO Auto-generated method stub
File file1=new File("D:\\Early-Precaution.txt"); File file2=new File("D:\\result.txt"); int k=0; int n=0; if(!file2.exists()){ file2.createNewFile(); }
InputStreamReader(System.in)); System.out.println("请在此输入参数:"); String str=in2.readLine(); System.out.println("输入的参数是:"+str);
FileWriter out1=new FileWriter(f1,true); BufferedWriter out2=new BufferedWriter(out1); out2.write(str); in2.close(); out2.close(); }catch(IOException e){ System.out.println("error:"+e); } } }
}
运行结果:
实验题 5 写一程序统计纯文本文件“Early-Precaution.txt”的大写字母、小写字母个数, 并将所有小写字母转换为大写字母,输出到 result.txt
代码: package cn.shangji.sjIO;
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;
实验五 Java 输入输出流
1.实验目的
(1) 掌握输入输出流的总体结构; (2) 掌握流的概念; (3) 了解各种流(包括文件流、管道流、连接文件、过滤流、对象的序列化、随机访问) 的使用。
JavaIO流详解(三)----字节流InputStream和OutPutStream
JavaIO流详解(三)----字节流InputStream和OutPutStream我们都知道在计算机中,⽆论是⽂本、图⽚、⾳频还是视频,所有的⽂件都是以⼆进制(字节)形式存在的,IO流中针对字节的输⼊输出提供了⼀系列的流,统称为字节流。
字节流是程序中最常⽤的流。
在JDK中,提供了两个抽象类InputStream和OutputStream,它们是字节流的顶级⽗类,所有的字节输⼊流都继承⾃InputStream,所有的字节输出流都继承⾃OutputStream。
既然⼆者是抽象类,那么就不能实例化,都是依赖于具体继承它们的⼦类去实现。
但⼆者抽象类中也包含它们各⾃的⽅法,如果我们先了解清楚抽象类中每⼀个⽅法的含义,那么对于后续具体的⼦类将会有⾮常⼤的帮助。
1、字节输⼊流InputStreamInputStream是所有字节输⼊流的⽗类,定义了所有字节输⼊流都具有的共同特征。
其内部提供的⽅法如下:image上图中的三个read()⽅法都是⽤来读数据的。
int read():每次读取⼀个字节,返回读取到的字节。
int read(byte[] b):每次读取b 数组长度的字节数,然后返回读取的字节的个数[注意与read() ⽅法的区别],读到末尾时返回-1。
int read(byte[] b,int off,int len):每次读取b 数组长度的字节数,从数组b 的索引为off 的位置开始,长度为len个字节。
⼩贴⼠:close⽅法,当完成流的操作时,必须调⽤此⽅法,释放系统资源。
其中InputStream的实现类FileInputStream是专门⽤于读取⽂件中的数据,通过它将⽬标设备上的数据读⼊到程序。
FileInputStream的构造⽅法:FileInputStream(File file):通过打开与实际⽂件的连接来创建⼀个FileInputStream ,该⽂件由⽂件系统中的File对象file命名。
io流实验报告心得
io流实验报告心得在进行io流实验的过程中,我学到了很多关于输入输出流的知识,也对其使用方法有了更深入的了解。
通过这次实验,我不仅巩固了之前学到的知识,还学到了一些新的技巧和注意事项。
我了解到io流是用于处理输入输出的一种机制,它把数据从一个地方传输到另一个地方。
在实验中,我通过使用FileInputStream和FileOutputStream类来创建输入输出流对象,并使用它们来读取和写入数据。
通过使用这些类,我可以操作各种类型的文件,包括文本文件和二进制文件。
在实验的过程中,我发现输入输出流的使用是非常灵活的。
无论是读取文件还是写入文件,都可以根据具体的需求选择合适的方法和参数。
例如,通过使用BufferedReader类,我可以一次读取一行文本,而不是逐个字符读取。
这样可以提高效率,并且使代码更加简洁易读。
我还学到了一些关于异常处理的知识。
在实验中,我发现在使用io 流时,很容易出现各种异常,例如文件找不到、文件权限不足等。
为了避免程序崩溃,我学会了使用try-catch语句来捕获和处理这些异常。
通过使用这些语句,我可以在出现异常时进行相应的处理,例如输出错误信息或者进行重试操作。
在实验中,我还学到了关于流的关闭操作。
在使用io流时,一定要记得在使用完毕后关闭流,以释放系统资源。
我学会了使用try-finally或try-with-resources语句来确保流的正确关闭。
这样可以避免资源泄漏的问题,同时也可以提高程序的性能。
通过这次实验,我还了解到了一些关于文件的操作。
在实验中,我学会了如何创建文件和文件夹,如何遍历文件夹中的文件,以及如何删除文件和文件夹。
这些知识对于日常的文件操作非常有用,可以帮助我们更好地管理和处理文件。
总的来说,通过这次io流实验,我对输入输出流有了更深入的了解,学到了一些新的技巧和注意事项。
我相信这些知识将在我的编程生涯中发挥重要的作用。
同时,这次实验也让我更加熟悉了Java编程语言,提高了我的编程能力。
Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Prope。。。
Java⾃学第10期——File类与IO流(输⼊输出流、处理流、转换流、缓冲流、Prope。
1、IO简介IO(输⼊输出)通过java.io包下的类和接⼝来⽀持,包下包括输⼊、输出两种IO流,每种输⼊输出流⼜可分为字符流和字节流两⼤类。
2、File类File类是io包下与平台⽆关的⽂件和⽬录,File能新建、删除、重命名⽂件和⽬录,不能访问⽂件本⾝,后者需要使⽤输⼊输⼊流。
2.1 构造⽅法File类的构造⽅法:File(File parent, String child) 参数:⽗路径,⼦路径根据 parent 抽象路径名和 child 路径名字符串创建⼀个新 File 实例。
File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建⼀个新 File 实例。
File(String parent, String child)根据 parent 路径名字符串和 child 路径名字符串创建⼀个新 File 实例。
File(URI uri)通过将给定的 file: URI 转换为⼀个抽象路径名来创建⼀个新的 File 实例。
2.2 静态⽅法File类静态⽅法:static String pathSeparator()与系统有关的路径分隔符,为了⽅便,它被表⽰为⼀个字符串。
static char pathSeparatorChar()与系统有关的路径分隔符。
static String separator()与系统有关的默认名称分隔符,为了⽅便,它被表⽰为⼀个字符串。
static char separatorChar()与系统有关的默认名称分隔符。
2.3 常⽤⽅法:2.3.1 获取相关public String getAbsolutePath()返回此File的绝对路径名字符串。
public String getPath()将此File转换为路径名字符串。
public String getName()返回由此File表⽰的⽂件或⽬录的名称。
【黑马程序员】Java IO流学习总结
【黑马程序员】Java IO流学习总结Java流操作有关的类或接口:Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。
即数根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
IO流的分类•根据处理数据类型的不同分为:字符流和字节流•根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。
本质节流和字符流的区别:•读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映•处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能结论:只要是处理纯文本数据,就优先考虑使用字符流。
除此之外都使用字节流。
输入流和输出流对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据Java IO流对象1.输入字节流InputStream IO 中输入字节流的继承图可见上图,可以看出:1 InputStream 是所有的输入字节流的父类,它是一个抽象类。
2 ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它本地文件中读取数据。
PipedInputStream 是从与其它线程共用的管道中读取数据,与P 3 ObjectInputStream 和所有FilterInputStream 的子类都是装饰流(装饰器模式的主角)。
2.输出字节流OutputStreamIO 中输出字节流的继承图可见上图,可以看出:1 OutputStream 是所有的输出字节流的父类,它是一个抽象类。
2 ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、PipedOutputStream 是向与其它线程共用的管道中写入数据,3 ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流。
Java-IO流
IO流一、流的概念程序的主要任务是操纵数据。
在Java中,把一组有序的数据序列称为流。
根据操作的方向,可以把流分为输入流和输出流两种。
程序从输入流读取数据,向输出流写出数据。
文件输入流输出流文件内存-------------------> Java程序------------------------>内存键盘控制台| |数据源数据目的地Java I/O系统负责处理程序的输入和输出,I/O类库位于java.io包中,它对各种常见的输入流和输出流进行了抽象。
如果数据流中最小的数据单元是字节,那么称这种流为字节流;如果数据流中最小的数据单元是字符,那么称这种流为字符流。
在I/O类库中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,java.io.Reader和java.io.Writer分别表示字符输入流和字符输出流。
注意:它们四个都是抽象类二、字节输入流和输出流概述在java.io包中,java.io.InputStream表示字节输入流,java.io.OutputStream表示字节输出流,它们都是抽象类,不能被实例化。
InputStream类提供了一系列和读取数据有关的方法:1.read(): 从输入流读取数据:有三种重载形式:a.int read():从输入流读取一个8位的字节(1字节是8位),把它转换为0-255之间的整数,并返回这一整数。
如果遇到输入流的结尾,则返回-1;b.int read(byte[] b): 从输入流读取若干个字节,把它们保存到参数b指定的字节数组中。
返回的整数表示读取的字节数。
如果遇到输入流的结尾,则返回-1;c.int read(byte[] b, int off, int len): 从输入流读取若干个字节,把它们保存到参数b指定的字节数组中。
返回的整数表示读取的字节数。
参数off指定在字节数组中开始保存数据的起始下标,参数len指定读取的字节数目。
io流flush方法
io流flush方法IO流是Java中用于输入输出的重要概念,它可以实现数据在程序和外部设备之间的传输。
在Java的IO库中,有一个重要的方法叫做flush(),本文将以该方法为主题,详细介绍flush()的作用、使用方法以及其在IO操作中的重要性。
我们来了解一下flush()方法的作用。
在Java中,IO操作涉及到数据的读取和写入,而数据的写入通常会先存储在缓冲区中,待缓冲区满了或者手动调用flush()方法时,数据才会被真正写入到目标设备中。
因此,flush()方法的作用就是将缓冲区中的数据强制刷新到目标设备中,确保数据的完整性和准确性。
接下来,我们来看一下flush()方法的使用方法。
在Java中,flush()方法通常是通过OutputStream和Writer类的实例对象调用的。
例如,我们有一个OutputStream的实例对象outputStream,可以通过调用outputStream.flush()来刷新缓冲区中的数据。
同样地,如果我们有一个Writer的实例对象writer,可以使用writer.flush()来刷新缓冲区中的数据。
需要注意的是,调用flush()方法并不会关闭流,只是将缓冲区中的数据写入到目标设备中。
那么,为什么要使用flush()方法呢?其实,使用flush()方法可以确保数据的及时传输。
在某些情况下,我们需要将数据立即发送到目标设备,而不是等到缓冲区满了再进行传输。
此时,我们可以手动调用flush()方法来实现。
例如,在网络编程中,当我们需要发送一条重要的数据时,可以先调用flush()方法将数据立即发送出去,而不需要等待缓冲区满了才进行传输。
这样可以提高程序的响应速度和性能。
除了手动调用flush()方法,还有一些情况下会自动触发flush()的操作。
例如,在使用BufferedWriter类时,它会在缓冲区满了或者调用了其close()方法时自动触发flush()操作。
java实现解析csv文件方法一:通过IO流解析,转化数组形式
java实现解析csv⽂件⽅法⼀:通过IO流解析,转化数组形式1.pom.xml引⼊jar包<!--csv--><dependency><groupId>com.opencsv</groupId><artifactId>opencsv</artifactId><version>4.4</version></dependency>2.使⽤IO流解析,转化数组形式/*** <b>将csv⽂件通过IO流解析,转化数组形式的集合<b>** @param fileName ⽂件(路径+csv⽂件名)*/public static List<String[]> csv(String fileName) {List<String[]> csvList = new ArrayList<String[]>();if (null != in) {try {InputStreamReader is = new InputStreamReader(new FileInputStream(fileName),"gbk");CSVParser csvParser = new CSVParserBuilder().build();CSVReader reader = new CSVReaderBuilder(is).withCSVParser(csvParser).build();csvList = reader.readAll();}catch (UnsupportedEncodingException e){e.printStackTrace();}catch (IOException e) {e.printStackTrace();}}return csvList;}3.调⽤测试mainpublic static void main(String[] args) throws IOException{List<String[]> strings = csv("路径+csv⽂件名");System.out.println("读取成功");for (String[] csvs:strings) {for (String s:csvs) {System.out.println(s);}}}。
JAVA实验报告
JAVA实验报告一、实验目的本次 Java 实验的主要目的是通过实际编程操作,深入理解 Java 语言的基本语法、面向对象编程的概念以及常用类库的使用。
同时,培养自己解决实际问题的能力,提高编程的熟练程度和代码质量。
二、实验环境操作系统:Windows 10开发工具:EclipseJDK 版本:18三、实验内容及步骤(一)基本语法练习1、数据类型与变量定义不同类型的变量,如整数型(int)、浮点数型(float、double)、字符型(char)和字符串型(String),并进行赋值和输出操作。
了解不同数据类型的取值范围和精度,以及在实际编程中的应用场景。
2、控制结构编写使用 ifelse 语句、switch 语句进行条件判断的程序。
运用 for 循环、while 循环和 dowhile 循环实现重复执行的操作。
3、数组与字符串声明和初始化一维数组和二维数组,对数组元素进行访问和操作。
进行字符串的拼接、截取、查找等常见操作。
(二)面向对象编程实践1、类与对象定义一个简单的类,包含属性和方法。
创建该类的对象,并调用对象的方法来操作属性。
2、继承与多态建立父类和子类,实现继承关系。
在子类中重写父类的方法,展示多态性。
3、封装与抽象将类的属性设置为私有,并提供公共的访问方法(getter 和 setter),实现封装。
定义抽象类和抽象方法,体会抽象的概念和作用。
(三)常用类库的使用1、 Java 输入输出(IO)使用 Scanner 类实现从控制台读取用户输入的数据。
运用 File 类和相关的输入输出流类,实现文件的读取和写入操作。
2、集合框架熟悉 ArrayList、LinkedList 等线性集合的使用方法。
了解 HashSet、TreeSet 等集合的特点和应用场景。
3、异常处理在程序中加入可能引发异常的代码段,并使用 trycatch 语句捕获和处理异常。
四、实验结果与分析(一)基本语法练习1、数据类型与变量成功定义了各种数据类型的变量,并正确进行了赋值和输出。
JavaIO流面试题
JavaIO流⾯试题1.java中有⼏种类型的流?字符流和字节流。
字节流继承inputStream和OutputStream,字符流继承⾃InputSteamReader和OutputStreamWriter。
2.字符流和字节流有什么区别?要把⼀⽚⼆进制数据数据逐⼀输出到某个设备中,或者从某个设备中逐⼀读取⼀⽚⼆进制数据,不管输⼊输出设备是什么,我们要⽤统⼀的⽅式来完成这些操作,⽤⼀种抽象的⽅式进⾏描述,这个抽象描述⽅式起名为IO流,对应的抽象类为OutputStream和InputStream ,不同的实现类就代表不同的输⼊和输出设备,它们都是针对字节进⾏操作的。
在应⽤中,经常要完全是字符的⼀段⽂本输出去或读进来,⽤字节流可以吗?计算机中的⼀切最终都是⼆进制的字节形式存在。
对于“中国”这些字符,⾸先要得到其对应的字节,然后将字节写⼊到输出流。
读取时,⾸先读到的是字节,可是我们要把它显⽰为字符,我们需要将字节转换成字符。
由于这样的需求很⼴泛,⼈家专门提供了字符流的包装类。
底层设备永远只接受字节数据,有时候要写字符串到底层设备,需要将字符串转成字节再进⾏写⼊。
字符流是字节流的包装,字符流则是直接接受字符串,它内部将串转成字节,再写⼊底层设备,这为我们向IO设别写⼊或读取字符串提供了⼀点点⽅便。
3.什么是java序列化,如何实现java序列化?我们有时候将⼀个java对象变成字节流的形式传出去或者从⼀个字节流中恢复成⼀个java对象,例如,要将java对象存储到硬盘或者传送给⽹络上的其他计算机,这个过程我们可以⾃⼰写代码去把⼀个java对象变成某个格式的字节流再传输,但是,jre本⾝就提供了这种⽀持,我们可以调⽤OutputStream的writeObject⽅法来做,如果要让java 帮我们做,要被传输的对象必须实现serializable接⼝,这样,javac编译时就会进⾏特殊处理,编译的类才可以被writeObject⽅法操作,这就是所谓的序列化。
java io流详解
java io流详解Java IO流是Java中的一个重要概念,它被用于文件的输入和输出,网络数据传输等方面。
本文将详细介绍Java IO流的使用以及其相关的知识点,让大家能够更好地了解并使用该重要技术。
一、流概述流是Java中非常重要的一个概念。
流实际上是一种在程序和存储设备之间传输信息的方式。
Java中的流是基于输入/输出(I/O)操作的,使用Java IO流,程序就可以从文件或网络中读取信息,也可以将信息写入到文件或网络中。
二、Java IO流分类Java IO流分为两类:字节流和字符流:1. 字节流是以字节(Int流)为单位传输数据,它适合传输二进制文件(如图片、音乐)等数据。
2. 字符流是以字符为单位传输数据,它适合传输文本文件等数据。
字节流又分为输入字节流和输出字节流,字符流又分为输入字符流和输出字符流。
三、Java IO流的基本操作1. 数据的输入:使用Java IO流读取文件的数据,可以使用FileInputStream类。
使用Java io输入流的步骤具体如下:① 创建输入流对象,即FileInputStream类。
② 读取数据,即使用read()方法读取数据。
③ 关闭读取流,即使用close()方法。
2. 数据的输出:使用Java IO流将数据写入到文件中,可以使用FileOutputStream类。
使用Java io输出流的步骤具体如下:① 创建输出流对象,即FileOutputStream类。
② 写入数据,即使用write()方法将数据写入文件中。
③ 关闭输出流,即使用close()方法。
3. 文件的复制:使用Java IO流可以轻松实现文件的复制。
具体操作步骤如下:① 创建输入流对象,即FileInputStream类。
② 创建输出流对象,即FileOutputStream类。
③ 读取数据,即使用read()方法读取数据,并调用write()方法写入到输出流中。
④ 关闭输入流和输出流。
