生活百科
java获取ip地址(详解java编程思想)
2022-11-05 20:01

在项目中一般都会遇到文件的读写,

一般有两个问题要进行处理

1路径问题

2读写问题

路径的解决方法

路径之间的连接”//”=”\”=”/”

eg1:D盘下面file文件夹里面的1.txt

path=”D://file//1.txt”

path=”D:/file/1.txt”

path=”D:\file\1.txt”

这三种都可以

1绝对路径(坚决不推荐使用)

就是从电脑的根目录开始C盘D盘,详情参考eg1

2相对路径

项目中默认是从项目的根目录开始的 如下图

获取到该目录下的所有文件(获取的是一个目录)

./ 获取到当前根目录

  1. String path=”./”;
  2. File f=new File(path);
  3. File[] files=f.listFiles();
  4. for(int i=0;i<files.length;i++){
  5. System.out.println(files[i].getName());
  6. }

../ 获取到根目录下的父目录 想要获取到多级的父目录只需要../ 写n个就好了(需要注意的是这种方法最大只能获取到 Windows盘下面的根目录,就是最多只能获取到 C盘 或者D盘,不可能和Linux 那种 /root/D)web 项目中

主要是分清楚 工作空间和发布空间就好了

比如当初使用struts2文件上传的时候

定义接受文件的目录

ServletContext servletContext = ServletActionContext.getServletContext();

String str=servletContext.getRealPath(“/files/”+fileFileName);

eclipse暂时出了点小问题等会再写这个

读写文件(如果不正确欢迎积极指出,一起进步)

因为文件有不同的格式,就文本文件来说有utf-8 GBK 等等

建议使用字节流 ( InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先)进行读取而不是字符流( Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先)

其实就是内部一个使用byte[]实现,一个是用char[] 这个可以看一下 JDK的源码就了解了

具体 字符流字节流之间的区别请看转载处

  1. http://blog.csdn.net/zxman660/article/details/7875799
  2. http://blog.csdn.net/cynhafa/article/details/6882061
  1. 读写文件
  2. package com.wzh.utils;
  3. import java.io.BufferedInputStream;
  4. import java.io.BufferedOutputStream;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileOutputStream;
  8. import java.io.InputStream;
  9. import java.io.OutputStream;
  10. public class InOutFile {
  11. public byte[] fileToByte(File file) {
  12. byte[] buffer = null;
  13. if (file == null) {
  14. throw new IndexOutOfBoundsException();
  15. }
  16. if (file.isDirectory())
  17. return buffer;
  18. if (file.length() > Integer.MAX_VALUE)
  19. return buffer;
  20. if (file.isFile()) {
  21. int filelength = (int) file.length();
  22. InputStream inputStream = null;
  23. BufferedInputStream bufferedInputStream = null;
  24. OutputStream outputStream=null;
  25. BufferedOutputStream bufferedOutputStream=null;
  26. File outfile=new File(“files//out//”+file.getName());
  27. int n = 0;
  28. int off = 0;
  29. int length = 4096;
  30. try {
  31. if(!outfile.exists())
  32. outfile.createNewFile();
  33. inputStream = new FileInputStream(file);
  34. outputStream=new FileOutputStream(outfile, true);
  35. bufferedInputStream = new BufferedInputStream(inputStream);
  36. bufferedOutputStream=new BufferedOutputStream(outputStream);
  37. buffer = new byte[filelength];
  38. while ((filelength – off) > 0 && (n = bufferedInputStream.read(buffer, off,
  39. ((length <= filelength – off) ? length : filelength – off))) >= 0) {
  40. bufferedOutputStream.write(buffer, off, n);
  41. off += n;
  42. }
  43. }
  44. catch (Exception e) {
  45. }
  46. finally {
  47. closeInputStream(bufferedInputStream);
  48. closeInputStream(inputStream);
  49. closeOutputStream(bufferedOutputStream);
  50. closeOutputStream(outputStream);
  51. System.out.println(“end”);
  52. }
  53. }
  54. return buffer;
  55. }
  56. private void closeInputStream(InputStream inputStream) {
  57. if (inputStream == null)
  58. return;
  59. try {
  60. inputStream.close();
  61. }
  62. catch (Exception e) {
  63. }
  64. }
  65. private void closeOutputStream(OutputStream outputStream) {
  66. if (outputStream == null)
  67. return;
  68. try {
  69. outputStream.flush();
  70. outputStream.close();
  71. }
  72. catch (Exception e) {
  73. }
  74. }
  75. }

当然字符流也可以进行读取文件

字符流也可以进行读取文件只不过要指定文件(文本文件)的编码

  1. private void createFile() throws Exception {
  2. File file = new File(“files//kindsformat//utf//1.txt”);
  3. //File file = new File(“files//kindsformat//gbk//1.txt”);
  4. if (!file.exists())
  5. file.createNewFile();
  6. Writer writer = new OutputStreamWriter(new FileOutputStream(file, true), “UTF-8”);
  7. //Writer writer = new OutputStreamWriter(new FileOutputStream(file), “GBK”);
  8. BufferedWriter bufferedWriter = new BufferedWriter(writer);
  9. bufferedWriter.write(“我是中文测试啊测试啊”);
  10. bufferedWriter.flush();
  11. bufferedWriter.close();
  12. writer.close();
  13. }

有不对的地方欢迎指出,谢谢

发表评论
0评