欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  新闻

java获取ip地址(详解java编程思想)

程序员文章站 2022-06-10 13:44:39
在项目中一般都会遇到文件的读写,一般有两个问题要进行处理1路径问题2读写问题路径的解决方法路径之间的连接”//”=”\”=”/”...

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

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

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相对路径

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

java获取ip地址(详解java编程思想)

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

./ 获取到当前根目录

  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. /**
  12. * @param file null、一个文件、一个文件目录、
  13. * <pre>
  14. * filetobyte(null)=null
  15. * filetobyte(file)=null file>2g
  16. * filetobyte(文件目录)=null
  17. * filetobyte(file)=byte[]
  18. * </pre>
  19. * @return null(文件不存在,null,文件目录,文件太大>2g) byte[](转换成功)
  20. */
  21. public byte[] filetobyte(file file) {
  22. byte[] buffer = null;
  23. if (file == null) {
  24. throw new indexoutofboundsexception();
  25. }
  26. if (file.isdirectory())
  27. return buffer;
  28. if (file.length() > integer.max_value)
  29. return buffer;
  30. if (file.isfile()) {
  31. int filelength = (int) file.length();
  32. inputstream inputstream = null;
  33. bufferedinputstream bufferedinputstream = null;
  34. outputstream outputstream=null;
  35. bufferedoutputstream bufferedoutputstream=null;
  36. file outfile=new file(“files//out//”+file.getname());
  37. int n = 0;
  38. int off = 0;
  39. int length = 4096;
  40. try {
  41. if(!outfile.exists())
  42. outfile.createnewfile();
  43. inputstream = new fileinputstream(file);
  44. outputstream=new fileoutputstream(outfile, true);
  45. bufferedinputstream = new bufferedinputstream(inputstream);
  46. bufferedoutputstream=new bufferedoutputstream(outputstream);
  47. buffer = new byte[filelength];
  48. /*
  49. * 添加(length <= filelength – off) ? length : filelength – off)的比较
  50. * 为了防止读到最后buffer 剩余的长度没有4096 装不下那么多会导致读取不了indexoutofboundsexception()
  51. * 当filelength – off=0时表示文件读取完毕但是read内部认为是其他线程占用io导致堵塞并不会认为文件读取完毕
  52. * 所以要添加上filelength – off>0
  53. */
  54. while ((filelength – off) > 0 && (n = bufferedinputstream.read(buffer, off,
  55. ((length <= filelength – off) ? length : filelength – off))) >= 0) {
  56. bufferedoutputstream.write(buffer, off, n);
  57. off += n;
  58. }
  59. }
  60. catch (exception e) {
  61. }
  62. finally {
  63. closeinputstream(bufferedinputstream);
  64. closeinputstream(inputstream);
  65. closeoutputstream(bufferedoutputstream);
  66. closeoutputstream(outputstream);
  67. system.out.println(“end”);
  68. }
  69. }
  70. return buffer;
  71. }
  72. /**
  73. * close inoutstream
  74. * @param inputstream null or the inputstream’s child
  75. */
  76. private void closeinputstream(inputstream inputstream) {
  77. if (inputstream == null)
  78. return;
  79. try {
  80. inputstream.close();
  81. }
  82. catch (exception e) {
  83. }
  84. }
  85. /**
  86. * close outputstream
  87. * @param outputstream null or the outputstream child
  88. */
  89. private void closeoutputstream(outputstream outputstream) {
  90. if (outputstream == null)
  91. return;
  92. try {
  93. outputstream.flush();
  94. outputstream.close();
  95. }
  96. catch (exception e) {
  97. }
  98. }
  99. }

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

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

  1. /**
  2. * 创建不同格式的文本文件
  3. * @throws exception
  4. */
  5. private void createfile() throws exception {
  6. file file = new file(“files//kindsformat//utf//1.txt”);
  7. //file file = new file(“files//kindsformat//gbk//1.txt”);
  8. if (!file.exists())
  9. file.createnewfile();
  10. writer writer = new outputstreamwriter(new fileoutputstream(file, true), “utf-8”);
  11. //writer writer = new outputstreamwriter(new fileoutputstream(file), “gbk”);
  12. bufferedwriter bufferedwriter = new bufferedwriter(writer);
  13. bufferedwriter.write(“我是中文测试啊测试啊”);
  14. bufferedwriter.flush();
  15. bufferedwriter.close();
  16. writer.close();
  17. }

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