🚀 作者主页: 有来技术
🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot
🌺 仓库主页: Gitee 💫 Github 💫 GitCode
💖 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请纠正!
目录
- 文件基本操作
- 创建文件
- 从文件读取数据
- 写入数据到文件
- 文件复制
- 文件转 Base64
- InputStream 和 BufferedImage 相互转换
- InputStream 转 BufferedImage
- BufferedImage 转 InputStream
- URL 转 InputStream
- InputStream 和 File 相互转换
- InputStream 转 File
- File 转 InputStream
- File 和 MultipartFile 相互转换
- File 转 MultipartFile
- MultipartFile 转 File
文件基本操作
创建文件
使用 File
类可以轻松创建文件对象:
File file = new File("example.txt");
从文件读取数据
使用 FileInputStream
读取文件内容:
try (FileInputStream fis = new FileInputStream("example.txt")) {int data;while ((data = fis.read()) != -1) {// 处理每个字节的操作System.out.print((char) data);}
} catch (IOException e) {e.printStackTrace();
}
写入数据到文件
使用 FileOutputStream
写入数据到文件:
try (FileOutputStream fos = new FileOutputStream("output.txt")) {byte[] data = "Hello, FileOutputStream!".getBytes();fos.write(data);
} catch (IOException e) {e.printStackTrace();
}
文件复制
使用 Files
类的 copy
方法可以实现文件的复制:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;Path sourcePath = Paths.get("source.txt");
Path targetPath = Paths.get("target.txt");try {Files.copy(sourcePath, targetPath);
} catch (IOException e) {e.printStackTrace();
}
文件转 Base64
使用 Java 8 的 Base64
类可以方便地将文件转换为 Base64 编码:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;Path filePath = Paths.get("example.txt");try {byte[] fileBytes = Files.readAllBytes(filePath);String base64String = Base64.getEncoder().encodeToString(fileBytes);System.out.println(base64String);
} catch (IOException e) {e.printStackTrace();
}
InputStream 和 BufferedImage 相互转换
BufferedImage 是什么?
BufferedImage
是 Java 中用于表示图像的类,它继承了 Image
类。与 Image
不同,BufferedImage
直接提供了对图像数据的操作,如读写像素值。这使得 BufferedImage
更适用于图像处理和分析。
与 InputStream 的区别:
InputStream
是字节流的抽象类,用于从各种数据源读取字节。而 BufferedImage
是 Java 中处理图像的类,提供了更高层次的图像操作。在图像处理中,通常使用 InputStream
从数据源读取图像二进制数据,然后通过 ImageIO.read
转换为 BufferedImage
进行进一步的处理。
InputStream 转 BufferedImage
使用 ImageIO
类的 read
方法可以将 InputStream
转换为 BufferedImage
:
import javax.imageio.ImageIO;
import java.io.IOException;
import java.io.InputStream;
import java.awt.image.BufferedImage;public class InputStreamToBufferedImage {public static BufferedImage convert(InputStream inputStream) throws IOException {return ImageIO.read(inputStream);}
}
BufferedImage 转 InputStream
使用 ByteArrayOutputStream
将 BufferedImage
转换为 InputStream
:
import javax.imageio.ImageIO;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.awt.image.BufferedImage;public class BufferedImageToInputStream {public static InputStream convert(BufferedImage bufferedImage) throws IOException {ByteArrayOutputStream outputStream = new ByteArrayOutputStream();ImageIO.write(bufferedImage, "png", outputStream);return new ByteArrayInputStream(outputStream.toByteArray());}
}
URL 转 InputStream
java.net.URL
类提供了从指定 URL 打开连接并获取输入流的方法。这对于从网络获取数据是非常常见的操作。在示例中,通过 url.openStream()
方法获取了与指定 URL 关联的输入流。
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;public class UrlToInputStreamExample {public static InputStream convert(String urlString) throws IOException {URL url = new URL(urlString);return url.openStream();}
}
InputStream 和 File 相互转换
InputStream 转 File
使用 Files
类的 copy
方法可以将 InputStream
中的数据复制到文件:
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;public class InputStreamToFileExample {public static void convert(InputStream inputStream, String filePath) throws IOException {Path targetPath = Paths.get(filePath);Files.copy(inputStream, targetPath, StandardCopyOption.REPLACE_EXISTING);}
}
File 转 InputStream
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;public class FileToInputStreamExample {public static InputStream convert(File file) throws IOException {return new FileInputStream(file);}
}
File 和 MultipartFile 相互转换
File 转 MultipartFile
在 Spring 框架中,MultipartFile
通常用于处理文件上传。在这个例子中,使用 MockMultipartFile
类来模拟文件上传,创建一个 MultipartFile
对象,并将文件的内容填充到其中。
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class FileToMultipartFileExample {public static MultipartFile convert(File file) throws IOException {FileInputStream input = new FileInputStream(file);return new MockMultipartFile("file", file.getName(), "text/plain", input);}
}
MultipartFile 转 File
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.springframework.web.multipart.MultipartFile;public class MultipartFileToFileExample {public static File convert(MultipartFile multipartFile, String filePath) throws IOException {File file = new File(filePath);try (FileOutputStream fos = new FileOutputStream(file);InputStream inputStream = multipartFile.getInputStream()) {byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = inputStream.read(buffer)) != -1) {fos.write(buffer, 0, bytesRead);}}return file;}
}
在这个示例中,MultipartFile
的内容被写入到一个新的 File
对象中。要确保在使用完毕后适当地关闭流。