2015-06-10 2 views
0

am Я все еще очень новичок в java, у меня был только один семестр. У меня есть первая стажировка, и это не стажировка по программированию, а просто стажировка в области ИТ. Это был только мой первый семестр. Мой босс не знает Java, ни кто-либо в здании. Он знал, что у меня есть некоторый базовый опыт программирования, и сказал, чтобы я сделал удар по проблеме, которую он испытывает. У него есть отчет, который сохранен и самая последняя строка, последний символ отчета - символ поворота символа, и нам нужно удалить его, потому что он дает нам проблемы на веб-сайте. Я не уверен, что я даже на правильном пути, на данный момент я просто делаю проб и ошибок. Пожалуйста, помогите: DJAVA Help: Добавить файл и удалить последний символ

public class RemoveChar { 

    public static void main(String[] args) throws FileNotFoundException { 

    // Variables and stuff 
    Scanner keyScan = new Scanner(System.in); 
    JFrame frameOne = new JFrame ("File Name"); 
    Scanner fileScan = new Scanner(System.in); 
    String fileName; 

    // Ask user for file name 
    System.out.print("What is the file full file name? "); 
    fileName = fileScan.nextLine(); 

    // Add .txt if the user forgets to put it in the prompt 
    if (!fileName.contains(".txt")) 
     fileName += ".txt"; 

    //Test to see if file exists 
    File myFile = new File(fileName); 
    if(!myFile.exists()){ 
     System.out.println(fileName + " does not exist. "); 
     System.exit(0); 
    } 

    fWriter = new FileWriter("config/lastWindow.txt", true); 
    /*while(fileName.hasNext()){ 

    } 
    File 
    BufferedReader inputFile = new BufferedReader(new FileReader("C:\\" +  fileScan)); 
    //Scanner reader = new Scanner (inputFile); 
    */ 



    } 

} 

ответ

2

Насколько велики файлы? Если они не так велики, вы можете прочитать весь файл в строку, а затем отрубить последний символ:

//Set delimiter to end-of-string anchor \Z so that you can read the 
//file in with just one call to next() 
//from: http://stackoverflow.com/a/3403112/263004 

String content = new Scanner(new File("filename")).useDelimiter("\\Z").next(); 
String withoutLastCharacter = content.substring(0, content.length - 1); 

Тогда вам просто нужно написать withoutLastCharacter к файлу.

В противном случае вам необходимо прочитать в исходном файле строку за строкой и записать его во временный файл, а затем скопировать этот файл поверх исходного. Однако, если вы находитесь на последней строке, вы отрубите последний символ. Вот некоторый код, который должен дать вам представление об основной логике:

while(scanner.hasNextLine()) { 
    String line = scanner.nextLine(); 

    //If this is the last line chop off the last character. 
    if(!scanner.hasNextLine()) { 
     line = line.substring(0, line.length - 1); 
    } 

    //Write line out to temporary file 
    ... 
} 

Вы также упомянули, что это не обязательно должна быть Java. Если вы находитесь на Linux или Mac, вы можете просто сделать это с sed:

sed -i '$s/.$//' <filename> 

Это приведет к удалению последнего символа последней строки файла.

1

Должно ли это быть проблемой Java? Для чего-то вроде этого, где это основная манипуляция файлами/строками, я предпочитаю использовать что-то вроде Perl. Ниже Perl скрипт удалит последний байт (или символ в данном случае) из файла

my $fsize = -s $filename; 
    # print $size."\n"; 
    open($FILE, "+<", $filename) or die $!; 
    seek $FILE, $size-2, SEEK_SET; 
    print $FILE ";"; 

    close $FILE; 
+0

Нет, он не должен быть Java, просто думал, что я хотел бы попробовать это, потому что я пытаюсь не провисает и научитесь мне все, что я могу. Но если все остальное не сработает, я пойду вперед и попробую это спасибо за подсказку! –

+0

Я люблю Perl, но я думаю, что здесь слишком много. Вы можете просто использовать 'sed' так:' sed -i '$ s /.$//' ':) –

+0

Я считаю, что Java здесь чрезмерно по сравнению с Perl, но я считаю, что вы правы, что Perl переполнен sed –

Смежные вопросы