只读文本文件在java中不起作用temp.setReadonly()不起作用

时间:2014-02-05 10:46:23

标签: java spring

 package com.studytrails.tutorials.springremotingrmiserver;
        import java.lang.Object;
        import java.io.*;
        import org.springframework.context.ApplicationContext;

        import org.springframework.context.support.ClassPathXmlApplicationContext;
        import org.springframework.core.io.Resource;

        public class GreetingServiceImpl implements GreetingService {
            @Override
            public String getGreeting(String name) {

                return "Hello " + name + "!";

            }


               public String getText()
               {
                   ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[]{"spring-config-server.xml"});

            Resource resource = appContext.getResource("file:D:\\text\\test.txt");
            StringBuilder builder = new StringBuilder();
        try{

              InputStream is = resource.getInputStream();
              BufferedReader br = new BufferedReader(new InputStreamReader(is));
              File temp=File.createTempFile("output", ".tmp");
              temp.setReadOnly();
              String filePath=temp.getAbsolutePath();
             // System.out.println(""+filePath);


              String line;
              PrintWriter out = new PrintWriter(new FileWriter("temp"));

              while ((line = br.readLine()) != null) {
               //System.out.println(line);

                  out.println(line);


                  //br.close();
              }

              RandomAccessFile file = new RandomAccessFile(temp, "r");
              String[] cmd = {"notepad" , "temp"}; 
              Runtime runtime = Runtime.getRuntime();

              Process proc = runtime.exec(cmd);

              out.close();
              br.close();

         temp.deleteOnExit();

            }catch(IOException e){
                e.printStackTrace();
            }
        return builder.toString();

               }


            }

在此代码中temp.setReadonly()方法无效,它会打开具有所有访问权限的文件     我如何控制临时文件访问。请验证它并给我这个想法 我怎么能解决它。在这里,我试图以只读模式打开文件,该模式位于 临时路径,但代码打开文本文档,但它不是只读模式。我怎么能改变它

1 个答案:

答案 0 :(得分:1)

您的代码错误

  1. 您正在打开一个名为output.tmp的文件,并将其设置为只读
  2. 您正在写一个名为temp
  3. 的文件
  4. 您强制使用2中编写的文件打开记事本而不是步骤1中创建的文件
  5. 在步骤1中打开的文件是只读的,但在代码的其余部分中不使用,该代码在一个完全不同的文件上运行。

    另一个提示永远不会自己构造ApplicationContext,除非它是用于引导您的应用程序。实现ApplicationContextAware或创建实例变量以保存ApplicationContext并将@Autowired放在其上。