【Java基础三】InputStream获取文件并保存

来源:互联网 发布:文件服务器监控软件 编辑:程序博客网 时间:2024/06/06 18:36

    最近在项目的开发过程中,有这样的一个需求:通过上游传送一个路径,通过文件获取的方式将其存取到自己想存取的地方,传送文件的类型不定,有可能是PDF,有可能是txt等。

构建代码思路:通过inputStream获取,再将其转换存入本地。

遇到问题:类型不同该如何存储?

---解决办法:通过截取路径字符串的方式将获取的文件名称截图直接存储。这样就会避免存储类型的单一化。

具体代码:

public static void main(String[] args) throws IOException {// 通过url获取文件// File f = new File("D:/20160603143324235166.pdf");File f = new File("D:/hello.docx");// 获取的文件路径// String url = "D:/20160603143324235166.pdf";String url = "D:/hello.docx";// 取得最后一个/的下标int index = url.lastIndexOf("/");// 返回字符串,截取最后方的文件的名称类型String newString = url.substring(index + 1);// 通过inputStream获取文件InputStream inputStream = new FileInputStream(f);// 定义一个文件名字进行接收获取文件FileOutputStream fileOut = new FileOutputStream(new File("F:\\" + newString));byte[] buf = new byte[1024 * 8];while (true) {int read = 0;if (inputStream != null) {read = inputStream.read(buf);}if (read == -1) {break;}fileOut.write(buf, 0, read);}// 查看文件获取是否成功if (fileOut.getFD().valid() == true) {System.out.println("获取文件保存成功");} else {System.out.println("获取文件失败");}fileOut.flush();}
主要就是分为两部分,获取文件,截图url文件名称。对于截图字符串,除上述一种方式之外,还可以考虑其他的方式:

方式二:截图最后"/"之后,转换成数组,通过string的copyValueOf去获取

public static void main(String[] args) {String url = "D:/hello.docx";  //取得最后一个/的下标  int index = url.lastIndexOf("/");  //将字符串转为字符数组  char[] ch = url.toCharArray();  //根据 copyValueOf(char[] data, int offset, int count) 取得最后一个字符串  String lastString = String.copyValueOf(ch, index + 1, ch.length - index - 1);  System.out.println(lastString);}
    因为需求很简单,只是为了起到保存的功能,方便下一个功能的调用。待需求复杂之后可以再考虑更优化的方式。通过基础去获取思想……

0 0
原创粉丝点击