您的位置:

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文件读写,在一个已经有内容的文件中,追加第一行,如何做到?

我的想法是可以用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读取配置文件的几种方法如下:

方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。缺点:不能在servlet外面应用读取配置信息。

方式二:采用ResourceBundle类读取配置信息,

优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。缺点:只能加载类classes下面的资源文件且只能读取.properties文件。

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}