Java Spring中使用ZXing二维码生成器如何将二维码文件权限设为755
Java生成二维码自动修改输出文件权限方案
你当前输出的文件权限由JDK默认的文件创建规则、系统umask共同决定,可以通过Java NIO提供的文件操作接口直接编程修改,无需手动执行chmod命令。
适配类Unix系统(Linux、macOS)方案
使用POSIX权限API直接设置目标文件权限,修改后的代码如下:
import java.nio.file.Files; import java.nio.file.attribute.PosixFilePermission; import java.nio.file.attribute.PosixFilePermissions; import java.util.Set; // 你原有需要的其他import保持不变 public static void generateQRCodeImage(String text, int width, int height, String filePath) throws WriterException, IOException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height); Path path = FileSystems.getDefault().getPath(filePath); MatrixToImageWriter.writeToPath(bitMatrix, "jpg", path); // 新增权限设置代码 // 此处示例设置权限为 所有者读写、组可读、其他用户可读,对应权限值644,表现为-rw-r--r-- Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rw-r--r--"); Files.setPosixFilePermissions(path, perms); }
你可以根据自己的需求调整fromString的入参:
- 要设置所有人可读可写,传入
rw-rw-rw-对应权限值666 - 要设置仅所有者读写、组无权限、其他无权限,传入
rw-------对应权限值600
适配Windows系统方案
Windows不支持POSIX权限规则,可通过Dos属性接口调整权限,示例代码如下:
// 写入文件完成后新增如下代码 // 取消文件只读属性 Files.setAttribute(path, "dos:readonly", false); // 如需要设置隐藏属性可以改为 Files.setAttribute(path, "dos:hidden", true);
注意事项
- 权限修改操作必须放在文件写入完成后执行,避免文件未创建导致报错
- 运行代码的用户需要拥有目标路径的文件权限修改权限,否则会抛出权限异常
内容的提问来源于stack exchange,提问作者lauwis premium
相关产品推荐
相关产品推荐

