我几个月来一直在学习Java,我遇到了一个需要帮助的问题。我有一个用户输入文件,其中包含许多条目:
>Item1 Description
DILDEQCLKGACQGTSVVIHTA
>Item2 Description
DILDEQCLKGACQGTSVVIHTASVIDVRNAV
>Item3 Description
AEKAGTS
>Item4 Description
RNAVPRHESAW
此文件中最多可能有100个项目。它是一个基本的文本文件,大写的序列将根据项目而有所不同。我认为其他读者/解析器依赖于'>'开始下一个条目。我想我也应该。
我的目标是从用户输入文件生成一个包含相同>ItemX Description
行的新文件,但字母序列需要反转。我已经尝试过Scanner,FileInputStream,DataInputStream和BufferedReader。不确定最好的方法是什么,效率最高。
我应该如何加载这些数据,以便最容易地反转字符串?似乎有很多方法输入数据,我似乎越来越迷失...我有一个字符串反转器似乎工作,所以我现在的目标是加载这些数据,然后转换为字符串反转。
提前感谢您的任何帮助。
注意 - 以下是其中一个条目的外观:
>41_BOVIN (Q9N179) Protein 4.1 (Band 4.1) (P4.1) (4.1R)
MHCKVSLLDDTVYECVVEKHAKGQDLLKRVCEHLNLLEEDYFGLAIWDNATSKTWLDSAK
EIKKQVRGVPWNFTFNVKFYPPDPAQLTEDITRYYLCLQLRQDIVSGRLPCSFATLALLG
SYTIQSELGDYDPELHGADYVSDFKLAPNQTKELEEKVMELHKSYRSMTPAQADLEFLEN
AKKLSMYGVDLHKAKDLEGVDIILGVCSSGLLVYKEKLRINRFPWPKVLKISYKRSSFFI
KIRPGEQEQYESTIGFKLPSYRAAKKLWKVCVEHHTFFRLTSTDTIPKSKFLALGSKFRY
SGRTQAQTRQASALIDRPAPHFERTASKRASRSLDGAAAVEPADRTPRPTSAPAIAPSPA
AEGGVPGAPVKKAQKETVQVEVKQEEAPPEDAEPEPSEAWKKKRERLDGENIYIRHSNLM
LEDLDKSQEEIKKHHASISELKKNFMESVPEPRPSEWDKRLSTHSPFRTLNINGQIPTGE
GPPLVKTQTVTISDTANAVKSEIPTKDVPIVHTETKTITYEAAQTDDSNGDLDPGVLLTA
QTITSETTSSTTTTQITKTVKGGISETRIEKRIVITGDADIDHDQVLVQAIKEAKEQHPD
所以我需要将第2行到第12行放到一个大字符串中然后反过来。
答案 0 :(得分:1)
不要重新发明轮子! Apache commons库为您解决了许多常见的编程问题。这里有两个可用于解决问题的类:
List<String> lines = org.apache.commons.FileUtils.readLines(file);
执行所有I / O工作,并以List形式读取文件行。 然后你可以使用另一个apache commons类进行逆转:
org.apache.commons.lang.StringUtils.reverse(str);
如果你使用maven,这里是依赖项:
对于FileUtils类(以及许多其他类):
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
对于StringUtils类(以及许多其他类):
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>