java文件读写,java文件读写异常

本文目录一览:

java文件读写

从你函数的签名来看,推测你做的是文件复制操作。

这样复制文件,在缓存分配和计算方面,都存在风险,你可能没有正确计算这些值或者strbuffer

超出范围。可以在读写源文件的同时写入到新文件,例如:

private static void copyFileUsingFileStreams(File source, File dest)

throws IOException {

InputStream input = null;

OutputStream output = null;

try {

input = new FileInputStream(source);

output = new FileOutputStream(dest);

byte[] buf = new byte[1024];

int bytesRead;

while ((bytesRead = input.read(buf))  0) {

output.write(buf, 0, bytesRead);

}

} finally {

input.close();

output.close();

}

}

另外还有3种复制文件方法,可以参见:

4 Ways to Copy File in Java

JAVA的文件读写问题

当热身了~import java.io.BufferedWriter;

import java.io.FileWriter;

import java.util.*;/*编写一个程序,用于从键盘读入信息,并存储到磁盘文件中去。

要求:1. 以行的方式读入姓名和学号信息,例如:张三 20071215 (姓名和学号中间用一个空格隔开)

2. 循环读入,直到用户输入“quit”或者“QUIT”结束

3. 程序提示要用户输入一个文件名,例如:请输入存储到的文件名: userlist.txt

4. 在整个上述过程中,要做例外处理;如果文件创建成功,则给出提示信息。*/public class test9

{

public static void main(String[] args)

{

T1();

}

public static void T1()

{

FileWriter out ;

BufferedWriter bw;

String fileName = null;

String message = null;

Scanner scanner = new Scanner(System.in);

System.out.print(“请输入存储到的文件名:”);

fileName = scanner.next();

try

{

out = new FileWriter(fileName);

bw = new BufferedWriter(out);

System.out.print(“\n文件创建成功!\n请输入姓名和学号信息:”);

while( !(message = scanner.next()).equalsIgnoreCase(“quit”))

{

bw.write(message);

bw.newLine();

}

bw.close();

out.close();

}

catch(Exception e)

{

System.out.println(“文件创建失败!”);

}

}} import java.util.Scanner;

import java.io.*;/*再编写一个程序,用于从上述存储的磁盘文件中读出信息,并显示在屏幕上。

要求:

1)文件名从键盘输入;

2)姓名和学号分开显示,例如屏幕显示如下信息:

文件 userlist.txt 中存储的姓名有: 张三 李四王五 ……

文件userlist.txt 中存储的学号有: 20061215 20061317 20061425 ….. */

public class test10

{

public static void main(String[] args)

{

T2();

}

public static void T2()

{

FileReader read;

BufferedReader in ;

Scanner scanner = new Scanner(System.in);

String fileName = null;

String message = null;

String[] buf = new String[2];

String[] name = new String[10];

String[] number = new String[10];

int pos1 = 0;

int pos2 = 0;

System.out.print(“请输入要读取的文件名:”);

fileName = scanner.next();

try

{

read = new FileReader(fileName);

in = new BufferedReader(read);

while((message = in.readLine()) != null)

{

buf = message.split(” “);

name[pos1++] = buf[0];

number[pos2++] = buf[1];

buf = new String[2];

}

}

catch(Exception e)

{

System.out.println(“该文件不存在!”);

}

System.out.println( “屏幕显示如下信息:”);

System.out.print(“文件”+fileName+”中存储的姓名有:”);

for(int i = 0; name[i] != null;i++)

{

System.out.print(name[i]+” “);

}

System.out.print(“\n文件”+fileName+”中存储的学号有:”);

for(int i = 0; number[i] != null;i++)

{

System.out.print(number[i]+” “);

}

}}

java文件读写,在一个已经有内容的文件中,追加第一行,如何做到?

我的想法是可以用RandomAccessFile,这个类的seek方法,想在文件的哪个位置插入内容都行。所以你的第一行就不在话下了。但是,这个会覆盖你文件中插入位置后面的内容。相当于我们在输入的时候,按了键盘的insert键盘。所以,像你这种情况只能用临时文件来存储原有的内容,然后把要插入的数据写入文件,再把临时文件的内容追加到文件中。\x0d\x0avoid insert(String filename,int pos,String insertContent){//pos是插入的位置\x0d\x0a File tmp = File.createTempFile(“tmp”,null);\x0d\x0a tmp.deleteOnExit();\x0d\x0a try{\x0d\x0a RandomAccessFile raf = new RandomAccessFile(filename,”rw”);\x0d\x0a FileOutputStream tmpOut = new FileOutputStream(tmp);\x0d\x0a FileInputStream tmpIn = new FileInputStream(tmp);\x0d\x0a raf.seek(pos);//首先的话是0\x0d\x0a byte[] buf = new byte[64];\x0d\x0a int hasRead = 0;\x0d\x0a while((hasRead = raf.read(buf))0){\x0d\x0a //把原有内容读入临时文件\x0d\x0a tmpOut.write(buf,0,hasRead);\x0d\x0a \x0d\x0a }\x0d\x0a raf.seek(pos);\x0d\x0a raf.write(insertContent.getBytes());\x0d\x0a //追加临时文件的内容\x0d\x0a while((hasRead = tmpIn.read(buf))0){\x0d\x0a raf.write(buf,0,hasRead);\x0d\x0a }\x0d\x0a }\x0d\x0a}

Java中对文件进行读写操作的基本类是什么?

Java.io包中包括许多类提供许多有关文件的各个方面操作。

1 输入输出抽象基类InputStream/OutputStream ,实现文件内容操作的基本功能函数read()、 write()、close()、skip()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。在文件读写的编程过程中主要应该注意异常处理的技术。

2 FileInputStream/FileOutputStream:

用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象);

本地文件读写编程的基本过程为:

① 生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类);

② 调用FileInputStream或FileOutputStream类中的功能函数如read()、write(int b)等)读写文件内容;

③ 关闭文件(close())。

3 PipedInputStream/PipedOutputStream:

用于管道输入输出(将一个程序或一个线程的输出结果直接连接到另一个程序或一个线程的输入端口,实现两者数据直接传送。操作时需要连结);

4管道的连接:

方法之一是通过构造函数直接将某一个程序的输出作为另一个程序的输入,在定义对象时指明目标管道对象

PipedInputStream pInput=new PipedInputStream();

PipedOutputStream pOutput= new PipedOutputStream(pInput);

方法之二是利用双方类中的任一个成员函数 connect()相连接

PipedInputStream pInput=new PipedInputStream();

PipedOutputStream pOutput= new PipedOutputStream();

pinput.connect(pOutput);

5 管道的输入与输出:

输出管道对象调用write()成员函数输出数据(即向管道的输入端发送数据);而输入管道对象调用read()成员函数可以读起数据(即从输出管道中获得数据)。这主要是借助系统所提供的缓冲机制来实现的。

6随机文件读写:

RandomAccessFile类(它直接继承于Object类而非InputStream/OutputStream类),从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。

随机文件读写编程的基本过程为:

① 生成流对象并且指明读写类型;

② 移动读写位置;

③ 读写文件内容;

④ 关闭文件。

七里河团队答疑助人,希望我的回答对你有所帮助

Java文件读写

实用的模糊(通配符)文件查找程序

1 import java.io.File;

2 import java.util.regex.Matcher;

3 import java.util.regex.Pattern;

4 import java.util.ArrayList;

5

6 /** *//**

7 * pTitle: FileService /p

8* pDescription: 获取文件 /p

9* pCopyright: Copyright (c) 2007/p

10* pCompany: /p

11* @author not attributable

12* @version 1.0

13*/

14public class FileService {

15 public FileService() {

16 }

17

18 /** *//**

19 * 在本文件夹下查找

20 * @param s String 文件名

21 * @return File[] 找到的文件

22 */

23 public static File[] getFiles(String s)

24 {

25 return getFiles(“./”,s);

26 }

27

28 /** *//**

29 * 获取文件

30 * 可以根据正则表达式查找

31 * @param dir String 文件夹名称

32 * @param s String 查找文件名,可带*.?进行模糊查询

33 * @return File[] 找到的文件

34 */

35 public static File[] getFiles(String dir,String s) {

36 //开始的文件夹

37 File file = new File(dir);

38

39 s = s.replace(‘.’, ‘#’);

40 s = s.replaceAll(“#”, “\\\\.”);

41 s = s.replace(‘*’, ‘#’);

42 s = s.replaceAll(“#”, “.*”);

43 s = s.replace(‘?’, ‘#’);

44 s = s.replaceAll(“#”, “.?”);

45 s = “^” + s + “$”;

46

47 System.out.println(s);

48 Pattern p = Pattern.compile(s);

49 ArrayList list = filePattern(file, p);

50

51 File[] rtn = new File[list.size()];

52 list.toArray(rtn);

53 return rtn;

54 }

55

56 /** *//**

57 * @param file File 起始文件夹

58 * @param p Pattern 匹配类型

59 * @return ArrayList 其文件夹下的文件夹

60 */

61

62 private static ArrayList filePattern(File file, Pattern p) {

63 if (file == null) {

64 return null;

65 }

66 else if (file.isFile()) {

67 Matcher fMatcher = p.matcher(file.getName());

68 if (fMatcher.matches()) {

69 ArrayList list = new ArrayList();

70 list.add(file);

71 return list;

72 }

73 }

74 else if (file.isDirectory()) {

75 File[] files = file.listFiles();

76 if (files != null files.length 0) {

77 ArrayList list = new ArrayList();

78 for (int i = 0; i files.length; i++) {

79 ArrayList rlist = filePattern(files[i], p);

80 if (rlist != null) {

81 list.addAll(rlist);

82 }

83 }

84 return list;

85 }

86 }

87 return null;

88 }

89

90 /** *//**

91 * 测试

92 * @param args String[]

93 */

94 public static void main(String[] args) {

95 }

96}

原创文章,作者:FITH,如若转载,请注明出处:https://www.506064.com/n/131825.html

(0)
FITHFITH
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

  • php强制转为string,php数据类型的强制转换的两种方式

    本文目录一览: 1、在php中,怎样把数字转化为字符串 2、php强制转换类型 3、如何把对象转化为字符串 php 在php中,怎样把数字转化为字符串 步骤如下: 1、首先新建一个…

    编程 2024-10-04
  • JS如何判断checkbox是否选中

    在web开发中,我们经常需要判断用户是否选中了一个或多个checkbox,以根据用户的选择进行后续操作。JavaScript提供了多种方法来判断checkbox是否被选中。 一、使…

    编程 2024-10-04
  • 详解达梦数据库备份

    一、达梦数据库备份速度 达梦数据库备份速度并不是一个固定值,它取决于以下几个因素: 1、备份类型:全备、增量备份还是差异备份; 2、备份文件存储位置:磁盘、磁带或网络位置; 3、服…

    编程 2024-10-04
  • 全面解析contextconfiguration

    一、使用contextconfiguration定义测试用例配置 在Django测试中,contextconfiguration用来给测试用例定义一个配置,以确定在测试环境下的一些…

    编程 2024-10-10
  • cmd规范seajs简析的简单介绍

    本文目录一览: 1、seajs是什么? 2、amd和cmd规范的区别 3、Seajs是什么及sea.js 由来,特点以及优势 seajs是什么? seajs 百科释义 SeaJS是…

    编程 2024-10-03
  • ubuntujava,ubuntuJava环境

    本文目录一览: 1、ubuntu下怎么实现java程序 2、ubuntu 怎么安装java 3、怎样在Ubuntu 14.04中安装Java 4、怎样在ubuntu上面安装Java…

    编程 2024-10-04
  • Bash循环全方面详解

    一、bash循环语句 Bash循环语句用于重复某一行为的操作,比如遍历数组或文件。Bash有四种类型的循环语句:for循环、while循环、until循环和select循环。 以f…

    编程 2024-10-04
  • java君(java君临天下破解版)

    本文目录一览: 1、作为初学者 学习JAVA 我需要先了解什么? 2、Java好学吗?可以自学不还是要报培训班 3、JAVA如何进阶 4、陈国君的java程序设计基础 怎么样 5、…

    编程 2024-10-03
  • 用php写的mail,php的使用

    本文目录一览: 1、PHP如何使用MAIL函数发邮件 2、如何使用php的mail函数发送邮件 3、如何在php用mail发送邮件 4、如何使用php中的mail函数发送html格…

    编程 2024-10-04
  • 包含2019与java认证的词条

    1、java有哪些证书考啊?? 2、JAVA考证有哪些! 3、关于Java软件工程师应该考取什么认证? 4、Java有哪些可考的证书? 5、JAVA有哪些认证?什么认证最好 sun…

    编程 2024-10-03

发表回复

登录后才能评论