我正在尝试在我的项目中实现一个按钮,单击该按钮会自动加载特定文件。目前,有用户从硬盘中选择文件的按钮。
因此,我下载了特定文件并将其插入到项目中。使用File f = new File(“demofile”)或类似的东西时 。的getClass()的getResource( “/资源/ file.txt的”)的GetFile();代码在本地工作。
但是,打包项目时,会抛出FileNotFoundException。
经过大量的在线研究后,有人建议使用以下内容:
in = new TextFileFeaturedSequenceReader(TextFileFeaturedSequenceReader.FASTA_FORMAT, file, DiffEditFeaturedSequence.class);
但是,对于这个项目,我需要将文件作为文件对象引用,以便它可以作为参数传递给其他函数,例如:
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
MyCustomNamespace.tweet_received(status.text)
class MyCustomNamespace(Namespace):
def on_connect(self):
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
myStreamListener = MyStreamListener()
global myStream
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
myStream.filter(track=['love'], async=True)
def on_disconnect(self):
pass
@staticmethod
def tweet_received(text):
emit('tweet_response', {'text': text})
socketio.on_namespace(MyCustomNamespace('/'))
有关如何解决此问题或将流读入文件对象的任何想法?
谢谢!
答案 0 :(得分:0)
如果您绝对必须传递文件,请将您的资源复制到temporary file:
Path path = Files.createTempFile(null, null);
try (InputStream stream =
getClass().getResourceAsStream("/resources/file.txt")) {
Files.copy(stream, path, StandardCopyOption.REPLACE_EXISTING);
}
in = new TextFileFeaturedSequenceReader(
TextFileFeaturedSequenceReader.FASTA_FORMAT,
path.toFile(),
DiffEditFeaturedSequence.class);
// Use the TextFileFeaturedSequenceReader as needed
// ...
Files.delete(path);