Java如何将URL读取的内容存入本地文件中

  • 要想访问网络资源,首先需要建立一个URL对象,通过openStream方法读取指定的资源
  • 读取网络资源内容,要构建一个输入流
  • 要想将内容写入文件,要构建一个文件对象和相应的文件输出流

具体代码实现如下:

package url;

import java.net.*;
import java.io.*;
import java.nio.charset.StandardCharsets;

public class ReadUrl {
    public static void main(String[] args) throws IOException {
        //构建一个URL对象
        URL tric = new URL("http://www.baidu.com");
        //创建一个文件对象
        File file = new File("C:\\Users\\Y\\Desktop\\JavaSE\\test\\src\\url\\test.txt");
        //创建一个文件输出流
        FileOutputStream fileOut = new FileOutputStream(file);
        //流的装配:使用openStream得到输入流,再通过输入流构造一个BufferReader对象
        BufferedReader in = new BufferedReader(new InputStreamReader(tric.openStream()));
        //将网页中读取的内容存入文件
        String inputLine;
        while((inputLine = in.readLine()) != null){
            fileOut.write(inputLine.getBytes(StandardCharsets.UTF_8));
            System.out.println(inputLine);
        }
        //流的关闭
        fileOut.close();
        in.close();
    }
}
实现前端上传文件到本地并将url存入本地数据库,需要前后端协同完成以下几个步骤: 1. 前端使用 Vue.js 实现文件上传,并将文件传递给后端。 2. 后端使用 Spring Boot 接收前端传递的文件,并将文件保存到本地。 3. 后端生成本地文件URL,将URL保存到数据库。 4. 前端从数据库获取URL,展示文件信息。 以下是具体实现步骤: 1. 前端实现文件上传,使用 Vue.js 和 Axios 实现,代码如下: ```html <template> <div> <input type="file" @change="onFileChange"> <button @click="uploadFile">上传</button> </div> </template> <script> import axios from 'axios'; export default { data() { return { file: null }; }, methods: { onFileChange(event) { this.file = event.target.files[0]; }, uploadFile() { const formData = new FormData(); formData.append('file', this.file); axios.post('/api/upload', formData).then(response => { console.log(response.data); }).catch(error => { console.log(error); }); } } }; </script> ``` 2. 后端使用 Spring Boot 接收前端传递的文件,并将文件保存到本地。代码如下: ```java @RestController @RequestMapping("/api") public class FileController { @Value("${file.upload-dir}") private String uploadDir; @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { String filename = file.getOriginalFilename(); Path path = Paths.get(uploadDir, filename); Files.write(path, file.getBytes()); return "上传成功"; } } ``` 在 Spring Boot ,使用 `@Value` 注解获取配置文件的变量值,即上传文件存储的路径。 3. 后端生成本地文件URL,将URL保存到数据库。代码如下: ```java @RestController @RequestMapping("/api") public class FileController { @Autowired private FileRepository fileRepository; @Value("${file.base-url}") private String baseUrl; @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { String filename = file.getOriginalFilename(); Path path = Paths.get(uploadDir, filename); Files.write(path, file.getBytes()); String url = baseUrl + filename; fileRepository.save(new FileEntity(filename, url)); return "上传成功"; } } ``` 在 Spring Boot ,使用 `@Value` 注解获取配置文件的变量值,即本地文件URL前缀。 4. 前端从数据库获取URL,展示文件信息。代码如下: ```html <template> <div> <div v-for="file in files" :key="file.id"> <a :href="file.url">{{ file.name }}</a> </div> </div> </template> <script> import axios from 'axios'; export default { data() { return { files: [] }; }, mounted() { axios.get('/api/files').then(response => { this.files = response.data; }).catch(error => { console.log(error); }); } }; </script> ``` 在 Vue.js ,使用 `axios` 发送请求获取文件信息,展示文件的名称和URL。需要注意的是,文件URL需要使用 `<a>` 标签展示,并且需要设置 `href` 属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只可爱的小猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值