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

Raj*_*Raj 4 java spring file barcode fileoutputstream

我有一个 SpringBoot 应用程序,我试图在其中测试条形码的生成,但出现此错误java.io.FileNotFoundException: (Read-only file system) Mac

\n\n

这是完成此任务的代码:

\n\n

pom.xml

\n\n
        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.13</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>net.sf.barcode4j</groupId>\n            <artifactId>barcode4j</artifactId>\n            <version>2.1</version>\n        </dependency>\n
Run Code Online (Sandbox Code Playgroud)\n\n

Test Class

\n\n
public class FooTest extends TestCase {\n    @Test\n    public void testP() {\n        try {\n            Code128Bean bean = new Code128Bean();\n            final int dpi = 160;\n\n            //Configure the barcode generator\n            bean.setModuleWidth(UnitConv.in2mm(2.8f / dpi));\n\n            bean.doQuietZone(false);\n\n            //Open output file\n            File outputFile = new File("/" + "test" + ".JPG");\n\n            FileOutputStream out = new FileOutputStream(outputFile);\n\n            BitmapCanvasProvider canvas = new BitmapCanvasProvider(\n                    out, "image/x-png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);\n\n            //Generate the barcode\n            bean.generateBarcode(canvas, "test");\n\n            //Signal end of generation\n            canvas.finish();\n\n            System.out.println("Bar Code is generated successfully\xe2\x80\xa6");\n        }\n        catch (IOException ex) {\n            ex.printStackTrace();\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

Error

\n\n
java.io.FileNotFoundException: /test.JPG (Read-only file system)\n    at java.io.FileOutputStream.open0(Native Method)\n    at java.io.FileOutputStream.open(FileOutputStream.java:270)\n    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)\n    at java.io.FileOutputStream.<init>(FileOutputStream.java:162)\n
Run Code Online (Sandbox Code Playgroud)\n\n

关于如何在我的机器(MacBook)上实现此功能有什么想法吗?Linux 的配​​置会有所不同吗?

\n

Ste*_*n C 6

问题是这样的:

File outputFile = new File("/" + "test" + ".JPG");
Run Code Online (Sandbox Code Playgroud)

注意“/”是根目录。

Mac OS 上的根目录显然位于只读文件系统中。这意味着您无法写入它。

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

关于如何使这项工作成功的任何想法。

不要尝试将文件写入根目录“/”。寻找更合适的地方;例如当前工作目录、用户主目录、临时目录等。