java中流的代码 java 流 编码

java输入输出流与文件,求源代码!感谢大佬!

你好,java的API中提供了用于对象输入输出文件的操作,实例代码如下:

我们提供的服务有:网站设计、成都网站设计、微信公众号开发、网站优化、网站认证、江阳ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的江阳网站制作公司

定义单词类如下(注意:你定义的类要实现Serializable接口)

public class Words implements Serializable {

private int size;

private String[] words;

public Words(){};

public Words(String...strs){

this.words = strs;

this.size = strs.length;

}

@Override

public String toString() {

return "Words{" +

"size=" + size +

", words=" + Arrays.toString(words) +

'}';

}

}

2. 对象输入输出api测试类

public class ObjIOTest {

public static void main(String[] args) {

String path = "d:/myIOTest.txt";

ObjIOTest objIOTest = new ObjIOTest();

Words words = new Words("hello", "my", "dear", "friend");

try {

objIOTest.writeObject(path,words);

Words wordsFromFile = (Words)objIOTest.readObject(path);

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

} catch (IOException | ClassNotFoundException e) {

e.printStackTrace();

}

}

//java serialize a object to file

public void writeObject(String path,Object map) throws IOException{

File f=new File(path);

FileOutputStream out=new FileOutputStream(f);

ObjectOutputStream objwrite=new ObjectOutputStream(out);

objwrite.writeObject(map);

objwrite.flush();

objwrite.close();

}

// read the object from the file

public Object readObject(String path) throws IOException, ClassNotFoundException{

FileInputStream in=new FileInputStream(path);

ObjectInputStream objread=new ObjectInputStream(in);

Object map=objread.readObject();

objread.close();

return map;

}

}

把两段代码拷贝到一个包下即可运行了,希望您的问题得到解答

Java中有几种类型的流?

FileInputSream类

FileInputStream(String name)

FileInputStream(File file)

第一个构造方法是用给定的文件名name创建一个FileInputStream对象

第二个方法使用File对象创建FileInputStream对象

使用文件输入流读取文件

例如

FileInputStream istream=new FileInputStream(“myfile.dat”);

File f=new File(“myfile.dat”);

FileInputStream istream =new FileInputStream(f);

处理IO异常

Try{

FileInputStream istream=new FileInputStream(“myfile.dat”);

}

Catch(IOException e){}

从输入流中读取字节

Int read();从输入流中顺序读取源中的单个字节数据,返回字节值(0~255之间的一个整数),如果到达源的末尾,则返回-1

Read方法还可以吧多个字节读入到字节数组中:

Int read(byte b[]);

Int read(byte b[],int off,int len);

关闭流

使用close();

FileOutputStream类

该类提供了基本的文件写入能力,除了从OutputStream类继承来的方法外,FileOutputStream类还提供了两个构造方法:

FileOutputStream(String name)

FileOutputStream(File file)

第一个构造方法,给指定的文件名name创建一个FileOutputStreak对象

第二个构造方法,使用File对象创建FileOutputStream对象

可以使用write()方法把字节写入到输出流到达目的地

Write的格式:

Public void write(byte b[]) 其功能就是把b.length个字节到输出流

Public void write(byte b[],int off,int len)给定字节数组中,偏移off处写入len个字节到输出流

FileOutputStream流顺序的写文件,只要不关闭流,每次调用write方法就顺序地向输出流写入内容,直到流被关闭。

以上代码见hyh.io--File/Fileinputstream/Fileoutputsream

以上输入输出流容易出现的问题就是:汉字乱码

FileReader类和FileWriter类

与FileInputStream和FileOutputStream字节流相对应的是FileReader和FileWriter字符流,其分别是Reader和Writer的子类,构造方法如下:

FileReader(String filename)

FileWriter(String filename)

使用字节读取文件时,字节流不能直接操作Unicode字符,所以Java提供字符流。由于汉字在文件中占用了两个字节,如果使用字节流,读取不当会出现乱码现象,采用字符流就可以避免这个现象,因为在Unicode字符中,一个汉字被看做一个字符。

如果需要每次读取一行数据,FileReader类没有提供这样的方法,所以必须把这个流再接到另外一个流伤,从后面的流中读取一行数据。Java为其命名为BufferedReader类,构造方法:

BufferedReader(Reader in)

BufferedReader流能够读取文本行,方法是readLine()

通过向BufferedReader传递一个Reader对象,来创建一个BufferedReader对象,

FileReader inone=new FileReader(“Student.txt”);

BufferedReader intwo=BufferedReader(inone);

类似的可以将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据写到目的地,

FileWriter tofile=new FileWriter(”hello.txt”);

BufferedWriter out=BufferedWriter(tofile)

然后out使用BufferedReader类的方法:

Write(String s,int off,int len)把字符串s写入到文件中,off是s开始处的偏移量,len是写入的字符数量

代码详情见hyh.javaio.FileReaderandWriter

代码总结:FileReader和FileWriter可以进行汉字的读取和写入

BufferedReader有读取行的功能,readLine()

RandomAccessFile类

RandomAccessFile类创建的流指向既可以作为源也可以作为目的地。换句话说,当想对一个文件进行读写操作时,可以创建一个指向该文件的RandomAccessFile流

构造方法:

RandomAccessFile(String name,String mode)参数name用来确定一个文件名,给出流的源。参数mode取r或者rw(只读或者读写),决定对文件的访问权限。

RandomAccessFile(File file,String mode)参数file是一个File对象,给出源,同时也是目的地。参数mode决定访问权限。

该类中有一个seek(long a)方法,用来定位RandomAccessFile流的读写位置。参数a确定读写位置距离文件开头的字节个数。

还可以调用getFilePointer()方法或者流当前的读写位置

类方法P280:

关闭文件

获取读写位置等。。。。。。。。

使用RandomAccessFile流实现一个通讯录的录入与显示系统

见RandomAccessFile

数据流P284

数组流P286

对象流P288

序列化与对象克隆P290

文件锁FileLockP293

Process类中的流P295

带进度条的输入流P298(这个是我自己整理的一部分的学习笔记,教材为Java2实用教程第三版(耿祥义编著),因为使用了word进行整理,首字母大写忘记取消和一些代码在myeclipse上,但是不妨碍你查看)

java中的“流”是什么?

Java中的流是个抽象的概念,当程序需要从某个数据源读入数据的时候,就会开启一个数据流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个数据流,这个数据源目的地也可以是文件、内存或网络等等\x0d\x0a\x0d\x0aJava中的流可以从不同的角度进行分类:\x0d\x0a按照流的方向不同:分为输入流和输出流。\x0d\x0a按照处理数据单位的不同:分为字节流(8位)和字符流(16位)。\x0d\x0a按照功能不同:分为节点流和处理流。\x0d\x0a节点流:是可以从一个特定的数据源(节点)读写数据的流(例如文件,内存)。就像是一条单一的管子接到水龙头上开始放水。\x0d\x0a处理流:是“连接”在已经存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。就像在已经接了一条管子(节点流)的基础上,又套上几个更粗,具有特殊功能的管子(处理流)对流出的水进一步的处理。\x0d\x0a四种基本流InputStream,OutputStream,Reader,Writer又分别有更具体的子类,分为文件流,缓冲流,数据流,转换流,Print流,Object流等,都分别有特定的功能或用来操作特定的数据

java的流操作,在公司的项目中长用到么?求具体代码

io。就是操作文件嘛。在公司经常有用到的。

现在是讲例子1:

//创建一个新文件

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

File f=newFile("D:\\hello.txt");

try{

f.createNewFile();

}catch(Exception e) {

e.printStackTrace();

}

}

}

//程序运行之后,在d盘下会有一个名字为hello.txt的文件。

例子2:

//File类的两个常量

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

System.out.println(File.separator);

System.out.println(File.pathSeparator);

}

}

运行结果:\

;

现在用常量来改动写上面的代码:

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

String fileName="D:"+File.separator+"hello.txt";

File f=newFile(fileName);

try{

f.createNewFile();

}catch(Exception e) {

e.printStackTrace();

}

}

}

用这些,建议使用常量,因为代码写的少了。

案例3:

//删除一个文件

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

String fileName="D:"+File.separator+"hello.txt";

File f=newFile(fileName);

if(f.exists()){

f.delete();

}else{

System.out.println("文件不存在");

}

}

}

案例4:创建一个文件夹

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

String fileName="D:"+File.separator+"hello";

File f=newFile(fileName);

f.mkdir();

}

}

案例5:列出指定目录的全部文件(包括隐藏文件):

importjava.io.*;

classhello{

publicstaticvoidmain(String[] args) {

String fileName="D:"+File.separator;

File f=newFile(fileName);

String[] str=f.list();

for(inti =0; i str.length; i++) {

System.out.println(str[i]);

}

}

}

大概的简单的东西,就这些了吧。你自己好好看看吧,欢迎追问。

JAVA中流编程的问题

前两个读取到的是import的前面两个字符的(就是i和m,这里打印出来的是它们的unicode编码),后面就继续读,然后你的循环里面写了i=10,所以读取10个字符以后就跳出循环了,所以只读了后面10个字符

java中如何实现字符流的写入写出?

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

public class InputStreamReaderTest

{

public static void main(String[] args)

{

try

{

File file=new File("F:\\io\\abc.txt");

FileOutputStream fos=new FileOutputStream(file);

OutputStreamWriter osw=new OutputStreamWriter(fos);

osw.write('大');

osw.write('家');

osw.write('好');

osw.close();

FileInputStream fis=new FileInputStream(file);

InputStreamReader isr=new InputStreamReader(fis);

System.out.println((char)isr.read());

System.out.println((char)isr.read());

System.out.println((char)isr.read());

isr.close();

}

catch (FileNotFoundException e)

{

System.out.println("操作的文件不存在");

}

catch(IOException e)

{

System.out.println("发生IO操作异常");

}

}

}


分享标题:java中流的代码 java 流 编码
链接地址:http://ybzwz.com/article/hggppo.html