java.io.FileNotFoundException:(只读文件系统)Mac

java.io.FileNotFoundException:(只读文件系统)Mac,java,spring,file,barcode,fileoutputstream,Java,Spring,File,Barcode,Fileoutputstream,我有一个SpringBoot应用程序,我试图在其中测试条形码的生成,但是我得到了这个错误java.io.FileNotFoundException:(只读文件系统)Mac 以下是完成此任务的代码: pom.xml 朱尼特 朱尼特 4.13 测试 net.sf.barcode4j 条形码4J 2.1 测试类 public类FooTest扩展了TestCase{ @试验 公共void testP(){ 试一试{ Code128Bean=新的Code128Bean(); 最终整数dpi=160;

我有一个SpringBoot应用程序,我试图在其中测试条形码的生成,但是我得到了这个错误
java.io.FileNotFoundException:(只读文件系统)Mac

以下是完成此任务的代码:

pom.xml


朱尼特
朱尼特
4.13
测试
net.sf.barcode4j
条形码4J
2.1
测试类

public类FooTest扩展了TestCase{
@试验
公共void testP(){
试一试{
Code128Bean=新的Code128Bean();
最终整数dpi=160;
//配置条形码生成器
设置模块宽度(单位换算为2mm(2.8f/dpi));
bean.doQuietZone(假);
//打开输出文件
File outputFile=新文件(“/”+“test”+“.JPG”);
FileOutputStream out=新的FileOutputStream(outputFile);
BitmapCanvasProvider canvas=新的BitmapCanvasProvider(
out,“image/x-png”,dpi,BufferedImage.TYPE_BYTE_BINARY,false,0);
//生成条形码
generateBarcode(canvas,“test”);
//信号生成结束
canvas.finish();
System.out.println(“条码生成成功…”);
}
捕获(IOEX异常){
例如printStackTrace();
}
}
}
错误

java.io.FileNotFoundException: /test.JPG (Read-only file system)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
java.io.FileNotFoundException:/test.JPG(只读文件系统)
位于java.io.FileOutputStream.open0(本机方法)
在java.io.FileOutputStream.open(FileOutputStream.java:270)
位于java.io.FileOutputStream。(FileOutputStream.java:213)
位于java.io.FileOutputStream。(FileOutputStream.java:162)
关于如何在我的机器(MacBook)上实现这一点,有什么想法吗?Linux的配置会有所不同吗

问题在于:

File outputFile = new File("/" + "test" + ".JPG");
注意“/”是根目录

Mac OS上的根目录显然位于只读文件系统中。这意味着你不能给它写信

在Linux/UNIX系统上,根文件系统通常不是只读的,但是您的应用程序无论如何都没有写入根目录的权限

我有什么想法可以让这一切顺利进行吗

不要试图将文件写入根目录“/”。找到更合适的地方;e、 g.当前工作目录、用户主目录、临时目录等。

问题在于:

File outputFile = new File("/" + "test" + ".JPG");
注意“/”是根目录

Mac OS上的根目录显然位于只读文件系统中。这意味着你不能给它写信

在Linux/UNIX系统上,根文件系统通常不是只读的,但是您的应用程序无论如何都没有写入根目录的权限

我有什么想法可以让这一切顺利进行吗

不要试图将文件写入根目录“/”。找到更合适的地方;e、 g.当前工作目录、用户的主目录、临时目录等等。

写入根“/”不是一个好主意。最佳做法是写入主目录,因为默认情况下,您拥有主目录的所有权限:

File outputFile = new File(System.getProperty("user.home"), "test.JPG");
避免文件分隔符写入根“/”不是一个好主意。最佳做法是写入主目录,因为默认情况下,您拥有主目录的所有权限:

File outputFile = new File(System.getProperty("user.home"), "test.JPG");

避免使用文件分隔符

是否确定路径正确?不应该是./test.JPG。此外,默认情况下,应用程序将作为当前用户运行。尝试触摸/hello,它将显示错误。您确定路径正确吗?不应该是./test.JPG。此外,默认情况下,应用程序将作为当前用户运行。尝试触摸/hello,它将显示一个错误