package com.studytrails.tutorials.springremotingrmiserver;
import java.lang.Object;
import java.awt.Desktop;
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");
String filePath=temp.getAbsolutePath();
System.out.println(""+filePath);
String tem=temp.getName();
String line;
PrintWriter out = new PrintWriter(new FileWriter(tem));
//System.out.println(""+filePath);
while ((line = br.readLine()) != null) {
out.println(line);
}
temp.setReadOnly();
String[] cmd = {"notepad",tem};
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(cmd);
// proc.getInputStream();
out.close();
br.close();
//temp.deleteOnExit();
}
catch(IOException e) {
e.printStackTrace();
}
return builder.toString();
}
}
在上面的代码中,我无法set_adonly();命令到临时文件。使用所有选项显示的文件可以建议如何使临时文件不被修改,甚至无法保存到其他位置。我只需要在程序运行时显示此文件。在此期间,用户不会更改任何内容,也不能将其保存为其他位置。
答案 0 :(得分:1)
我建议在使用之前关闭文件(通过记事本):
PrintWriter out = new PrintWriter(new FileWriter(tem));
//System.out.println(""+filePath);
while ((line = br.readLine()) != null) {
out.println(line);
}
out.close();
temp.setReadOnly();
String[] cmd = {"notepad",tem};
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(cmd);
// proc.getInputStream();
为避免用户将文件移动到其他位置,您可以在临时文件夹中另外创建临时文件,并使文件夹也只读。但是如果用户可以阅读,他们通常可以将文件复制到另一个位置。如果我记得很清楚,在Windows中你可以标记为读取但是阻止复制文件(当然是通过Windows)。